我有以下用户模型:
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;
我做错了什么?
答案 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