Ruby on rails Rails模型如何在类方法中引用列
我目前有两个模型-问题和响应,我正在尝试在响应模型上添加一个方法,以便我可以执行Ruby on rails Rails模型如何在类方法中引用列,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我目前有两个模型-问题和响应,我正在尝试在响应模型上添加一个方法,以便我可以执行Issue.Responses.latest 我目前正在为#self.issue_id)获取未定义的方法'issue_id')您正在引用issue_id列fine。问题是您试图提供一个值self.issue\u id,但是没有issue\u id类方法来响应 另外,issue.responses.latest不会调用Response的latest类方法,因为responses是一个。但是,您可以定义问题最新\u响应的
Issue.Responses.latest
我目前正在为#self.issue_id)获取
未定义的方法'issue_id')您正在引用issue_id
列fine。问题是您试图提供一个值self.issue\u id
,但是没有issue\u id
类方法来响应
另外,issue.responses.latest
不会调用Response
的latest
类方法,因为responses
是一个
。但是,您可以定义问题
最新\u响应的实例方法
在一个相关的点上,由于responses
是一个可枚举的
,您可以通过{code>response{response}response.created{u at}
执行issue{id
中的删除self.issue{id
中的自我
,我得到了错误未定义的局部变量或方法'issue{id'
正确。你想过滤什么?也就是说,您打算在这里指定issue\u id
的值是什么?我最终尝试执行issue.responses.latest
,以获取对特定问题的最后一次响应。好的,我们从issue开始。响应将属于
类型。如果你在最后使用来创建一个,你会得到一个数组。为Response
定义类方法对您没有帮助。您可以定义一个Issue
实例方法,让您执行Issue.latest\u Response
或定义一个Response
类方法,让您执行Response.latest(Issue.responses)
。
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