Rails模型如何在类方法中引用列

时间:2013-12-08 21:17:00

标签: ruby-on-rails ruby-on-rails-4

我目前有两个模型 - 问题和回复,我正在尝试在响应模型上添加一个方法,以便我可以issue.responses.latest

我目前正在undefined method 'issue_id' for #<Class:...

如何在self.latest方法的响应表中引用列issue_id

class Issue < ActiveRecord::Base
  has_many :responses
end

class Response < ActiveRecord::Base
  belongs_to :issue

  def self.latest
    select([:id, :user_id, :issue_id, :response, 'MAX(created_at)'])
       .where(:issue_id => self.issue_id) <!-- How to reference the issue_id column here?
       .group(:issue_id)
  end
end

1 个答案:

答案 0 :(得分:2)

您正在引用issue_id列。问题是您尝试提供self.issue_id,但issue_id没有Response类方法。

此外,latest不会调用Response的{​​{1}}类方法,因为issue.responses.latestresponses。但是,您可以定义<ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_Collec‌​tionProxy_Table:0x007f85220bd3b8>的{​​{1}}实例方法。

在相关点上,由于Issuelatest_response,您可以执行responses