アクティブなレコードの関連付けを初めて作成しています。関連付けを追加した後に何が起こるかを知りたいです。私はレール3.2.14を使用しています
ユーザー、アプリケーション、ジョブの 3 つのテーブルがあります。
1] アプリケーションはユーザーとジョブに属しているため、アプリケーション テーブルに User_Id と Job_id を外部キー列として追加しました。
2]必要な関連付けも追加しました。
3] 外部キー列と関連付けを追加した後、rake db:migrate を実行するだけで十分ですか、それともリレーショナル モデリングを完了するために他に何かする必要がありますか?
いくつかのコンテキスト
ジョブリンクをクリックした後に新しいアプリケーションを作成すると、job_id と user_id が Application:create メソッドのフレームワークによって自動的に入力されることを期待していました。
Application.new(params[:application])
ただし、foreign_key 列はフレームワークによって入力されていないようです。create メソッドで関連する job_id と user_id を手動で抽出し、アプリケーションに入力する必要があります。
関連付けを追加しないことの利点の 1 つは、後で関連付けが has_many ではなく has_and_belong_to_many であることに気付いた場合、その時点で関連付けが「凍結」されていないため、テーブルでそれを処理できることです。
次の質問があります。
1]モデルで関連付けを定義することの利点は何ですか。モデルに関連付けずに、外部キー列を追加して処理することもできました。
2] モデルに関連付けを追加することで、他に何を期待する必要がありますか (最終的には私の人生が楽になりますか)?
モデルは次のとおりです。
Models:
class User < ActiveRecord::Base
rolify
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :role_ids, :as => :admin
attr_accessible :name, :email, :password, :password_confirmation, :remember_me, :user_id
validates_presence_of :email
end
class Job < ActiveRecord::Base
attr_accessible :company, :desc, :location, :application_id, :applicant_id
belongs_to :recruiters, :class_name => "User"
has_many :applications
has_many :applicants,:class_name => "User", through: :applications
end
class Application < ActiveRecord::Base
attr_accessible :applicant_email, :applicant_name, :recruiter_id, :applicant_id, :user_id
belongs_to :jobs
belongs_to :applicants, :class_name => "User"
end
注: コメント セクションにビデオやブログへのリンクを自由に提供してください。すべてのステップを理解するのに役立つ公式ドキュメントが見つかりませんでしたhttp://guides.rubyonrails.org/association_basics.html、関連するレールキャストはありません