我正在使用关系user has_many websites
的设计
在创建新网站时会引发undefined method has_role? for nil:NilClass
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
答案 0 :(得分:0)
要扩展sevenseacat的评论,您的所有网站是否都必须属于用户?如果您一直希望该网站有用户,那么您应该验证该字段:
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
请注意,如果没有用户对象,这将使priority
保持不变 - 您是否需要为非管理员设置不同的优先级,或者如果用户为空?