0

我有三个 rails 模型:Usage(month, amount), Project(title, description) & Project_savings(amount)。

每个项目将有一个 project_saving.amount 与每个 usage.month 实例相关联。因此,每次使用将有_many project_savings(每个项目一个),每个项目将有_many project_savings(每个使用月一个)。每个项目的每个 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

现在关于“我应该在这里设置一个:通过 somehwere 吗?”的问题:

如果您有一个独立实体的关系模型,则使用 has_many :through 关系。简单地说,只有当你真的想为关系本身添加一些东西时,你才应该使用 has_many :through。否则,您将使用更简单的 has_and_belongs_to_many 关联(带有连接表)。

如果您希望我对您的帖子给出更具体的答案,您应该真正考虑您希望您的模型如何相互交互。例如,Project_saving 是与 Usage 和 Project 相关还是仅属于 Project?等等,你的描述让你很难理解你真正想让你的模型做什么。

于 2013-02-26T12:42:10.003 回答