User、Task、および TaskInstance の 3 つのモデル/テーブルがあります。Task テーブルはタスクのマスター リストのようなもので、特定のユーザーに結合されていません。一方、TaskInstance テーブルには、ユーザーが特定のタスクを完了したことを示すレコードが含まれています。つまり、TaskInstance には、ユーザー ID、タスク ID、およびステータス ブール値があります。ユーザーには多くの TaskInstances があります。ユーザーは TaskInstances を共有せず、それぞれ独自のコレクションを持っています。
ユーザーが最初に Web サイトでアカウントにサインアップしたときUser.task_instances
に、マスター リストに存在するすべてのタスクの新しい TaskInstance がフィールドに入力されるようにしたいと考えています。
私が読んだことからbefore_create
、初めて保存される前に User を更新する必要があるため、 を使用してこれを行う必要があると思います。これまでのところ、私は持っています:
class User < ActiveRecord::Base
has_many :task_instances
before_create :populate_task_instances
private
def populate_task_instances
#something here
end
end
populate_task_instances
これまでのところ、メソッドに何が含まれているのかわかりません。Task テーブルのすべてのレコードをループ処理し、それぞれに対して TaskInstance を作成し、TaskInstances のコレクションがユーザーのtask_instances
フィールドに確実に保存されるようにするにはどうすればよいですか?
これはかなり些細なことだと理解していますが、これが Rails への私の最初の進出です。