0

私は 3 つの Rails モデルを持っています: Usage(month, amount), Project(title, description) & Project_ Savings(amount)。

各プロジェクトには、usage.month のインスタンスごとに関連付けられた project_ Saving.amount があります。したがって、各使用量には have_many project_ Savings (各プロジェクトに 1 つ) があり、各プロジェクトには have_many project_ Savings (各使用月に 1 つ) があります。各プロジェクトの各 project_ Saving.amount は、その月の usage.amount と同じです。

私はこれを次のようにしようとしていました:

Project has_many :project_savings,
        has_many :usages, through :project_savings

Usage   has_many :project_savings
        has_many :projects, through :project_savings

Project_saving belongs_to :usage, :project

これを計算するコードを project_ Savings モデルに入れますか? ProjectSaving モデルに以下を入れると:

Project.all.each do |p|
  Usage.all.each do |u|
    p.create_project_saving(amount: u.amount)
  end
end

これにより、usage_id と project_id の両方が project_ Saving に自動的に関連付けられますか、それとも手動で入力する必要がありますp.create_project_saving(usage_id:u.id, amount:u.amount)か??

乾杯!

4

1 に答える 1

1

正直なところ、あなたのテキストはかなり混乱しています。

重要な最初のステップは、関連付けに関する railsguide を読むことだと思います。

http://guides.rubyonrails.org/association_basics.html

ここで、「ここに :through somehwere を設定する必要がありますか?」という質問に関して:

has_many :through 関係は、独立したエンティティである関係モデルがある場合に使用されます。簡単に言えば、関係自体に実際に何かを追加したい場合にのみ、has_many :through を使用する必要があります。それ以外の場合は、単純な has_and_belongs_to_many 関連付け (結合テーブルを使用) を使用します。

投稿に対してより具体的な回答を求めたい場合は、モデル同士がどのように相互作用するかをよく考えてください。たとえば、Project_ Saving は Usage と Project の両方に関連していますか、それとも Project のみに属していますか? あなたの説明は、モデルに実際に何をさせたいのかを解読するのを難しくします。

于 2013-02-26T12:42:10.003 に答える