我目前有两个模型 - 问题和回复,我正在尝试在响应模型上添加一个方法,以便我可以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
答案 0 :(得分:2)
您正在引用issue_id
列。问题是您尝试提供self.issue_id
的值,但issue_id
没有Response
类方法。
此外,latest
不会调用Response
的{{1}}类方法,因为issue.responses.latest
是responses
。但是,您可以定义<ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_Table:0x007f85220bd3b8>
的{{1}}实例方法。
在相关点上,由于Issue
是latest_response
,您可以执行responses