我有以下用户模型:
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
如果我现在在我的 View 中调用类似的内容:
unless current_user.has_issues
我收到以下错误:
NoMethodError in Controller#index
undefined method `has_issues' for #<User:0x72dd7c0>
我做错了什么?
最佳答案
范围是您在类上调用的方法(例如 User.has_issues
)或 ActiveRecord::Relation(例如 User.where(...).has_issues
)。您不能在模型的实例上调用作用域方法。如果您想获取有关模型实例的信息,您应该使用实例方法,而不是范围:
class User < ApplicationRecord
has_many :issues
def has_issues?
issues.resolved.exists?
end
end
关于ruby-on-rails - rails : undefined method Error when scoping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42028810/