after_create コールバックを使用して、結合モデルを介して User に Program_id を割り当て、同じ結合モデルの 3 つの追加パラメーターに初期値を割り当てようとしています。
program_id の割り当ては正常に機能しますが、追加のパラメーターを追加する方法がわかりません。
class User < ActiveRecord::Base
after_create :assign_user_program, :add_initial_programs
def assign_user_program
self.programs = Program.for_user(self)
end
class Program < ActiveRecord:Base
def self.for_user(user)
where(:goal_id => user.goal_id, :experience_id => user.experience_level_id, :gender => user.gender)
end
after_create で別のメソッドを作成して他の 3 つのパラメーターを割り当てようとしましたが、結合モデルに 3 つのパラメーターが割り当てられた別のレコードが作成され、program_id はありません。
def add_initial_programs
self.user_programs.create(:cycle_order => 1, :group_order => 1, :workout_order => 1)
end
作成したばかりのレコードを簡単に更新する方法についてのアイデアはありますか?
編集:
明確にするために、図に示すように、結合テーブルに、program_id、user_id、group_order、cycle_order、workout_order を使用して 1 つのレコードを作成しようとしています。
何が起こっているかというと、2 つのレコードを取得しています。下の図を参照してください。