Ruby on rails 在创建未定义的方法之前,`has#role?&x27;零级:零级
我正在使用Desive与关系Ruby on rails 在创建未定义的方法之前,`has#role?&x27;零级:零级,ruby-on-rails,devise,Ruby On Rails,Devise,我正在使用Desive与关系用户拥有多个网站 创建新网站时,未定义的方法具有\u角色?对于零:零类 class Website < ActiveRecord::Base attr_accessible :priority belongs_to :user before_create :set_priority private def set_priority if user.has_role? :admin self.priority = 3
用户拥有多个网站
创建新网站时,未定义的方法具有\u角色?对于零:零类
class Website < ActiveRecord::Base
attr_accessible :priority
belongs_to :user
before_create :set_priority
private
def set_priority
if user.has_role? :admin
self.priority = 3
end
end
end
class网站
要扩展Sevensacat的评论,您的所有网站是否都必须属于某个用户?如果您总是希望网站有用户,则应验证该字段:
validates :user_id, presence: true # Enforce the presence of a user for each website
您还可以通过在尝试使用用户对象之前检查该用户对象是否存在来防止方法出错:
def set_priority
if user && user.has_role? :admin
self.priority = 3
end
end
请注意,如果没有用户对象,这将使优先级保持不变-您是否需要为非管理员设置不同的优先级,或者如果用户为空?因为用户
为零。仅仅因为网站属于某个用户,并不意味着它总是有一个。@sevensacat您能告诉我如何在回调中检查用户角色吗?用户没有,因为他们不存在。如果user&&user.has\u role?:管理员