我有三种导轨型号:用法(月份,数量),项目(标题,描述)& 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)
??
干杯!
答案 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?等等,你的描述很难破译你真正希望模特做的事情。