1

私は自分のアプローチが適切かどうかを理解しようとしています。ユーザーモデルと報酬モデルがあります。アプリケーション管理者が各ユーザーレコードに報酬を割り当てることを許可する必要があります。この報酬は時間の経過とともに変化する可能性があり、その変化を追跡したいと思います。調査の結果、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についてレビューしたほとんどのWebディスカッションは、ビューではなくモデルを中心にしています。

どんな援助もいただければ幸いです。

4

4 に答える 4

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

于 2012-09-27T05:22:31.093 に答える
0

あなたの目標が何であるかは本当に明確ではありません。なぜユーザーは多くの報酬を持っているのでしょうか?なぜ報酬には多くのユーザーがいるのでしょうか、特定のユーザーが報酬を受けるための特別な報酬ではないのでしょうか?また、2番目の質問でどのような形式について話しているのかもわかりません。

そうは言っても、上記のコードと同様のことを行うものが必要な場合は、次のものが必要になります。

class User < ActiveRecord::Base
  has_and_belongs_to_many :compensations
end

class Compensation < ActiveRecord::Base
  has_and_belongs_to_many :users
end

ドロップダウンについては、Railsselectヘルパーを調べてください。申し訳ありませんが、これ以上具体的にすることはできません。繰り返しになりますが、あなたが何をしようとしているのか正確にはわかりません。

于 2012-09-27T03:20:43.003 に答える
0

私はそれを理解しましたが、別の方向に進みました。今のところ、履歴を追跡できないことに決め、collection_selectを使用して動的ドロップダウンを作成しました–

于 2012-09-28T04:08:05.243 に答える
0

あなたの最初の質問は次のとおりです。私は正しいですか、これは私が達成しようとしていることを知っている最良のアプローチでしょうか?回答:これは良いアプローチですが、より具体的な解決策として、そこで「ポリモーフィックな関連付け」を行うことができます。2番目の質問は、支払いテーブルに入力するドロップダウンフィールド(報酬テーブルからのプール)をフォームに含める最も簡単な方法は何ですか?

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

もしそうなら、私のこの例に従ってください。私はそれがあなたを助けると思います。

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

于 2012-09-28T06:49:28.520 に答える