我想要做的是将所有用户的角色设置为“用户”,但我没有过多地使用控制台或 Ruby,这从我在下面尝试使用它们的方式中应该很清楚。
我曾希望这样的事情会奏效:
u=User.all
u.role.name="user"
但是,显然,这不起作用,我不知道如何进行。
我将 CanCan 与能力模型一起使用,并通过角色中的“名称”列设置角色名称。用户通过分配拥有许多角色
用户.rb
has_many :assignments
has_many :roles, :through => :assignments
以下是所有内容的设置方式:
赋值.rb
class Assignment < ActiveRecord::Base
  belongs_to :user
  belongs_to :role
end
能力.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
角色.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
  #
您能告诉我如何使用控制台为所有用户设置角色名称吗?