Rails将子记录加载到现有父对象的更好方法

时间:2017-09-27 00:54:02

标签: ruby activerecord ruby-on-rails-5

我有一个典型的has_many关系:

class Effort < ApplicationRecord
  has_many :split_times
end

在各种情况下,我最终都会进行实例化工作,并使用split_time.effort_id == effort.id创建新的split_times。当我想将努力对象传递给另一个服务时,我必须确保该工作的split_times不是陈旧的,我可以使用effort.reload来做到这一点。

但如果我想在工作中加载split_times,我发现自己在做:

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

必须有更好的方法......不存在吗?

1 个答案:

答案 0 :(得分:0)

因为你可以访问努力对象,所以你可以做到

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

希望这会有所帮助