我如何设置这种rails关系?

时间:2013-02-26 11:39:16

标签: ruby-on-rails-3

我有三种导轨型号:用法(月份,数量),项目(标题,描述)& Project_savings(量)。

对于每个usage.month实例,每个项目都有一个与之关联的project_saving.amount。因此,每个用法都将具有多个project_savings(每个项目一个),每个项目将具有多个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) ??

干杯!

1 个答案:

答案 0 :(得分:1)

老实说,你的文字很混乱。

我认为重要的第一步是阅读关于协会的railsguide:

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

现在关于“我应该建立一个:通过某些人在这里吗?”的问题:

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

如果您希望我对您的帖子给出更具体的答案,您应该考虑您希望模型如何相互交互。例如,Project_saving是否与Usage和Project相关,或者它是否仅属于Project?等等,你的描述很难破译你真正希望模特做的事情。

相关问题