/ / Rails:has_many:through-ruby-on-rails、has-many-through

Rails:has_many:through-ruby-on-rails、has-many-through

私のアプローチが適切。ユーザーモデルと報酬モデルがあります。アプリケーション管理者が各ユーザーレコードに報酬を割り当てることを許可する必要があります。この補正は時間の経過とともに変化する可能性があるため、変化を追跡したいと思います。いくつかの研究の後、私は has_many =>:through これは、Paymentsと呼ばれる3番目のモデルを使用して他の2つに参加し、そのモデル内でuser_idとCompensation_idを使用してこれにアプローチする方法でした。次のセットがあります。

class User < ActiveRecord::Base

has_many :payments
has_many :compensations, :through => :payments


class Compensation < ActiveRecord::Base

has_many :payments
has_many :users, :through => :payments

class Payment < ActiveRecord::Base

has_many :Users
has_many :compensations

私の最初の質問は: これが私が達成しようとしていることを知っている最良のアプローチであることは正しいですか? 2番目の質問は、支払いテーブルに入力するフォーム(補償テーブルからのプール)にドロップダウンフィールドを含める最も簡単な方法は何ですか?残念ながら、私がレビューしたほとんどのウェブディスカッション has_many:through ビューではなくモデルを中心にしています。

いかなる援助も感謝します。

回答:

回答№1は1
class User < ActiveRecord::Base
has_many :payments
has_many :compensations, :through => :payments
end

class Compensation < ActiveRecord::Base
has_many :payments
has_many :users, :through => :payments
end

class Payment < ActiveRecord::Base
belongs_to :user
belongs_to :compensation
end

これを試してみてください」 より詳しい情報。このビデオをご覧ください- has_many-> through


回答№2の場合は0

あなたの目標が何であるかは本当に明確ではありません。 ユーザーが多くの報酬を受け取るのはなぜですか?補償には多くのユーザーがいるのに、「特定の補償は特定のユーザーに補償されないのでしょうか?」2番目の質問で話している形式もわかりません。

つまり、上記のコードに似た何かをしたい場合、必要なものは次のとおりです。

class User < ActiveRecord::Base
has_and_belongs_to_many :compensations
end

class Compensation < ActiveRecord::Base
has_and_belongs_to_many :users
end

ドロップダウンについては、Railsを調べてください select ヘルパー。申し訳ありませんが、「もっと具体的にすることはできません。もう一度、私はあなたが何をしようとしているのか正確にはわかりません」。


回答№3の場合は0

私はそれを考え出した-しかし、別の方向に進んだ-今のところ、私は履歴を追跡することに反対し、collection_selectを使用してダイナミクスのドロップダウンを作成することに決めた-


回答№4の場合は0

最初の質問は: これが私が達成しようとしていることを知っている最良のアプローチであることは正しいですか? 回答:これは適切なアプローチですが、より具体的なソリューションを得るために「多態的な関連付け」を行うことができます。 2番目の質問は、支払いテーブルに入力するドロップダウンフィールドをフォームに含める最も簡単な方法(補償テーブルからのプール)です。

2番目の質問はあまり明確ではありません。何らかの属性の値を表示しますか?

もしそうなら、私のこの例に従ってください。役立つと思います。

contact.select:contactable、@ member.contacts.map {| r | [r.first_name、r.id]}