Rails的更好的方式来加载子记录到我有一个典型的has_many关系现有的父对象

问题描述:

Rails的更好的方式来加载子记录到我有一个典型的has_many关系现有的父对象

class Effort < ApplicationRecord 
    has_many :split_times 
end 

在各种情况下,我结束了一个实例化的努力,我创造新的split_times与split_time.effort_id == effort.id。当我想要将努力对象传递给另一个服务时,我必须确保努力的split_times不是陈旧的,我可以使用effort.reload来完成此操作。

但是,如果我想成为努力加载split_times,我发现自己做:

effort = Effort.where(id: effort.id).eager_load(:split_times).first 

必须有一个更好的办法......不存在?

+1

真的不知道你在说什么。为什么要有更好的方法? –

+1

查看http://guides.rubyonrails.org/association_basics.html#bi-directional-associations和http://guides.rubyonrails.org/association_basics.html#has-many-association-reference(特别是collection.create) 。也许整个页面读了几次...... –

+0

另外,如果有帮助,请查看范围或default_scope。 –

,因为你有机会获得工作对象,也许你可以做

@effort = #effort_object 
split_times = @effort.split_times 
=> #returns array of data 

希望这有助于