Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在创建未定义的方法之前,`has#role?&x27;零级:零级_Ruby On Rails_Devise - Fatal编程技术网

Ruby on rails 在创建未定义的方法之前,`has#role?&x27;零级:零级

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

我正在使用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
    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?:管理员