Rails:association - 用户has_many Model1,Model1 has_many Model2

时间:2013-12-09 06:26:12

标签: ruby-on-rails ruby-on-rails-4 rails-activerecord

“用户”有许多“数据集”。 “数据集”有许多“图形”。如何使用Rails关联建模? 此设置有什么问题吗?

用户基本上可以上传许多数据集。对于每个数据集,用户可以从中创建多个图表。我需要“为用户获取所有图形”和“获取数据集的所有图形”。

模型

class User < ActiveRecord::Base
    has_many :datasets
    has_many :graphs, through: :datasets
end

class Dataset < ActiveRecord::Base
    belongs_to :user
    has_many :graphs
end

class Graph < ActiveRecord::Base
  belongs_to :dataset
  belongs_to :user # Do I need this line? Or is it implicit since it belongs to dataset?
end

表格

用户

id, email

数据集

id, user_id, name

图表

id, dataset_id, type # Do I need "user_id" in here also?

1 个答案:

答案 0 :(得分:0)

除了属于用户部分的图表外,它看起来还不错。如果Rails支持belongs_to:through,它可以在这里使用,但实际上,不需要在Graph表上使用user_id - 可以通过数据集简单地检索Graph的用户。