1
我想要做的是爲所有用戶設置角色爲「用戶」,但我沒有使用控制檯或Ruby太多,這應該清楚從我的方式,試圖在下面使用它們。爲使用控制檯的所有用戶設置角色
我希望像這樣的工作:
u=User.all
u.role.name="user"
但是,很顯然,這不是工作,我不知道如何着手。
我正在CanCan中使用能力模型,並通過角色中的「名稱」列設置角色名稱。用戶必須通過分配
user.rb許多角色
has_many :assignments
has_many :roles, :through => :assignments
這裏的一切是如何設置的:
assignment.rb
class Assignment < ActiveRecord::Base
belongs_to :user
belongs_to :role
end
ability.rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # in case of guest
if user.has_role? :admin
can :manage, :all
#else
# can :read, :all
end
end
end
ro le.rb
class Role < ActiveRecord::Base
attr_accessible :name
has_and_belongs_to_many :users, :join_table => :users_roles
belongs_to :resource, :polymorphic => true
end
角色模式
# == Schema Information
#
# Table name: roles
#
# id :integer not null, primary key
# name :string(255)
# resource_id :integer
# resource_type :string(255)
# created_at :datetime not null
# updated_at :datetime not null
#
你可以讓我知道我將如何使用控制檯的所有用戶設置的角色叫什麼名字?
另外還有#find_each的':batch_size'選項和[#find_in_batches](http://guides.rubyonrails.org/active_record_querying.html#retrieving-multiple-objects-in-batches)方法。 –
我認爲這會工作,但我的角色通過任務分配給用戶「的has_many:角色:通過=>:分配」得到一個錯誤「的ActiveRecord :: StatementInvalid:PG ::錯誤:錯誤:列‘’關係」的作用用戶「不存在」 –
試了第二個建議,看看是否會工作,並得到這個錯誤「NoMethodError:未定義的方法'角色=」爲#<用戶:0x007f8d92894bb8>」 –