ruby-on-rails - rails : undefined method Error when scoping

标签 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

如果我现在在我的 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/

相关文章:

algorithm - 算法和方法有什么区别

ruby-on-rails - 每个 'when' block 中有多个值的 Case 语句

ruby-on-rails - 使用 Assets 管道在 Rails 4 项目中包含 JavaScript 文件

ruby-on-rails - 对于一般的 Rails 项目,我应该选择哪种持续集成服务?

ruby - 如何使用 httparty 模仿 curl Action

java - 我可以在一行 foreach 循环中执行两种方法吗?

java - 设置 while 语句来打印方法?

ruby-on-rails - 从数据库中提取一些配置变量以在 Rails 环境中动态设置?

ruby-on-rails - 在 Ruby on Rails 中的多对多关系中,如何使用父表表单中的数据在连接表中创建记录?

ruby-on-rails - 如何使用 Rails XML Builder 创建单个元素 JSON 数组?