0

アクティブなレコードの関連付けを初めて作成しています。関連付けを追加した後に何が起こるかを知りたいです。私はレール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、関連するレールキャストはありません

4

1 に答える 1

0

1) コード内での一般的な操作がよりシンプルで簡単になるため。本質的には Active Record パターンです。これが既に組み込まれているのに、クエリなどを自分で処理するコードを作成する必要はありません。これにより、コードが大幅に削減され、クエリが大幅に読みやすくなります。2) これは広すぎて答えられないので、答えません。

于 2013-08-22T19:49:44.947 に答える