2017-09-27 4 views
1

上に子レコードをロードするためのより良い方法:様々な状況でRailsの既存の親オブジェクト

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

あなたはで取得している本当にわからないのに役立ちます

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

希望を行うことができます。なぜもっと良い方法がなければならないのですか? –

+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

また、そのヘルプがあればscopeまたはdefault_scopeを見てください。 –

答えて

0

あなたが努力オブジェクトへのアクセス権を持っているので、多分あなたは、これが

関連する問題