我正在向一个不是我制作的旧应用程序添加一项功能,这加上 RoR 相对较新,导致我有些困惑。
我有名为reponse
、activity_point
和report
的模型
response
有两个父级,它属于 activity_point
和 report
。
我正在尝试访问 do block 的 activity_points
,如下所示:
report.responses.activity_points.activity.each do |a|
显然这是行不通的。我收到错误消息:
undefined method `activity_points' for []:ActiveRecord::Relation
感谢任何能帮助我解决这个小问题的人。
最佳答案
或者您可以将类似的内容添加到您的报告模型中
has_many :responses
has_many :activity_points, :through => :responses
has_many :activities, :through => :activity_points
那么你可以这样做
report.activities.each do |a|
执行此类操作的另一种方法是向 Report 添加一个方法并从另一端加入(以获取事件对象)
def activities
Activity.joins(:activity_points => :responses).where('responses.report_id = ?', id)
end
做这一切的重点是,如果不需要,您就不想创建 Ruby 对象。嵌套循环也是唯一项和排序的潜在问题。
关于ruby-on-rails - 如何访问模型子项的不同父项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32103187/