0

私はRailsを初めて使用しますが、使用する必要のある関係の種類について疑問があります。これがその場合です。

オファーとユーザーの2つのモデルがあります。ユーザーは多くのオファーに属することができ、オファーは多くのユーザーを持つことができます。また、ユーザーはオファーを作成します。

私はhas_many:throughralationshipを使用する必要があると思います。たとえば、別のモデル「申請者」を作成しました。申請者belongs_touserおよびbelongs_tooffer。しかし、ユーザーとオファーモデルとの関係はどうですか?例えば:

ユーザーモデル

 has_many :offer, :through => :applicant

オファーモデル

 has_many :user, :through => :applicant

私の疑問は、私がすでにこの2つの関係を持っているからです

ユーザーモデル

has_many :offers, :dependent => :destroy

オファーモデル

belongs_to :user

これを解決した後、applicanst_controllerから申請者モデルのレコードを保存する必要がありますよね?

前もって感謝します

4

1 に答える 1

3

あなたが説明したのは、結合テーブルを使用した多対多の関係です。あなたは実際にはかなり近いですがhas_many :offers, :dependent => :destroy、ユーザーモデルからを削除blongs_to :userし、オファーモデルから を削除するだけです。次のようになります。

class User < ActiveRecord::Base
  has_many :offers, :through => :applicants
end

class Applicant < ActiveRecord::Base
  belongs_to :users
  belongs_to :offers
end


class Offer < ActiveRecord::Base
  has_many :users, :through => :applicants
end

対応するオブジェクトが削除されると関連付けが自動的に削除されるため、依存する破棄部分について心配する必要はありません。多対多の関連付けでは、どのように関係を構築するかは問題ではありません。次のいずれかが機能します。

@user.offers << @offer

@offers.users << @user

申請者の結合テーブルに固有の情報 (タイム スタンプ、説明など) を保存する必要がない場合は、代わりにhas_and_belongs_to_manyの関係を参照することをお勧めします。参照用に has_many_through と has_and_belongs_to_many の選択を確認してください。

編集

HABTM 関係のコードは次のとおりです。

class User < ActiveRecord::Base
  has_and_belongs_to_many :offers
end


class Offer < ActiveRecord::Base
  has_and_belongs_to_many :users
end
于 2012-12-15T00:19:19.223 に答える