只是尝试安装Rolify来创建一个管理员角色,该角色有权编辑一些具体的属性......
我一步一步地遵循它的文档,一切看起来很好,除非我尝试向用户添加角色,它会说
undefined method add_role for <User:0x00000109c39880>
在我的用户模型中,我有rolify
方法应该提供add_role
方法......
2重要注意事项:
我正在使用friendly_id 我正在使用设计宝石
任何人都可以提供帮助吗?
class User < ActiveRecord::Base
rolify
attr_accessor :tos_agreement
is_impressionable :counter_cache => true, :column_name => :impressions_counter, :unique => :request_hash
has_many :photos
has_many :tags, through: :photos
has_many :comments, through: :photos
validates :tos_agreement, acceptance: true
extend FriendlyId
friendly_id :name, use: :slugged
mount_uploader :avatar, AvatarUploader
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable, :omniauthable,
:recoverable, :rememberable, :trackable, :validatable
def update_with_password(params={})
if params[:password].blank?
params.delete(:password)
params.delete(:password_confirmation) if params[:password_confirmation].blank?
end
update_attributes(params)
end
# Omniauth Devise
def self.find_for_facebook_oauth(auth, signed_in_resource=nil)
user = User.where(:provider => auth.provider, :uid => auth.uid).first
@user = user
if user
return user
else
registered_user = User.where(:email => auth.info.email).first
if registered_user
return registered_user
else
user = User.create(name:auth.extra.raw_info.name,
provider:auth.provider,
uid:auth.uid,
email:auth.info.email,
password:Devise.friendly_token[0,20],
)
# if user.save
# UserMailer.welcome_email(@user).deliver
# end
end
end
end
end
class Role < ActiveRecord::Base
has_and_belongs_to_many :users, :join_table => :users_roles
belongs_to :resource, :polymorphic => true
scopify
end
由于
答案 0 :(得分:3)
重启服务器:)
根据我的个人经验,每当我遇到一个应该存在且不存在的方法时,我怀疑没有调用负责定义方法的方法。我希望rolify
能够生成一些异常,而不是静默失败。
Rails开发服务器只会自动重新加载你的类(config.autoload_paths
中指定的类),来自gems的库需要重启服务器。现有tools可自动重新加载宝石。