Sha256: 7fa71584a0100a4d53b5024508e422655932d744c3de990ba9b1ad146590871d

Contents?: true

Size: 1.89 KB

Versions: 3

Compression:

Stored size: 1.89 KB

Contents

require 'active_record'

RSpec::Matchers::OperatorMatcher.register(ActiveRecord::Relation, '=~', RSpec::Matchers::BuiltIn::MatchArray)
ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
ActiveRecord::Base.extend Rolify

load File.dirname(__FILE__) + '/../schema.rb'

# Standard user and role classes
class User < ActiveRecord::Base
  rolify
end

class Role < ActiveRecord::Base
  has_and_belongs_to_many :users, :join_table => :users_roles
  belongs_to :resource, :polymorphic => true

  extend Rolify::Adapter::Scopes
end

# Resourcifed and rolifed at the same time
class HumanResource < ActiveRecord::Base
  resourcify :resources
  rolify
end

# Custom role and class names
class Customer < ActiveRecord::Base
  rolify :role_cname => "Privilege"
end

class Privilege < ActiveRecord::Base
  has_and_belongs_to_many :customers, :join_table => :customers_privileges
  belongs_to :resource, :polymorphic => true

  extend Rolify::Adapter::Scopes
end

# Namespaced models
module Admin
  def self.table_name_prefix
    'admin_'
  end
  
  class Moderator < ActiveRecord::Base
    rolify :role_cname => "Admin::Right", :role_join_table_name => "moderators_rights"
  end

  class Right < ActiveRecord::Base
    has_and_belongs_to_many :moderators, :class_name => "Admin::Moderator", :join_table => "moderators_rights"
    belongs_to :resource, :polymorphic => true

    extend Rolify::Adapter::Scopes
  end  
end


# Resources classes
class Forum < ActiveRecord::Base
  #resourcify done during specs setup to be able to use custom user classes
end

class Group < ActiveRecord::Base
  #resourcify done during specs setup to be able to use custom user classes

  def subgroups
    Group.where(:parent_id => id)
  end
end

class Team < ActiveRecord::Base
  #resourcify done during specs setup to be able to use custom user classes
  self.primary_key = "team_code"
  
  default_scope { order(:team_code) }
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
rolify-3.4.0 spec/support/adapters/active_record.rb
rolify-3.3.0 spec/support/adapters/active_record.rb
third-prestige-rolify-3.3.0.rc5 spec/support/adapters/active_record.rb