Rails:未定义方法作用域

时间:2017-02-03 16:31:20

标签: ruby-on-rails ruby methods scope ruby-on-rails-5

我有以下用户模型:

class User < ApplicationRecord
    # Associations
    has_many :issues
    # Instances
    def has_issues?
        issues.resolved.exists?
    end
end

和问题模型:

class Issue < ApplicationRecord
    # Associations
    belongs_to :user
    # Scopes
    scope :resolved, -> { where(:resolved => true) }
end

如果我现在在我的观点中打电话:

unless current_user.has_issues

我收到以下错误:

  

Controller#index中的NoMethodError   未定义的方法`has_issues&#39;对于#&lt; User:0x72dd7c0&gt;

我做错了什么?

1 个答案:

答案 0 :(得分:1)

范围是您在类上调用的方法(例如User.has_issues)或ActiveRecord :: Relation(例如User.where(...).has_issues)。您无法在模型的实例上调用范围方法。如果要获取有关模型实例的信息,则应使用实例方法,而不是范围:

class User < ApplicationRecord
  has_many :issues

  def has_issues?
    issues.resolved.exists?
  end
end