0

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
4

1 回答 1

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保持不变 - 您是否需要为非管理员设置不同的优先级或者如果用户为空白?

于 2013-11-08T09:17:08.603 回答