Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:associations-用户拥有多个Model1,Model1拥有多个Model2_Ruby On Rails_Ruby On Rails 4_Rails Activerecord - Fatal编程技术网

Ruby on rails Rails:associations-用户拥有多个Model1,Model1拥有多个Model2

Ruby on rails Rails:associations-用户拥有多个Model1,Model1拥有多个Model2,ruby-on-rails,ruby-on-rails-4,rails-activerecord,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 < ActiveR

“用户”有许多“数据集”。“数据集”有许多“图形”。如何使用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, user_id, name
图表

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

除了属于用户部分的图形之外,它看起来还可以。如果支持的Rails属于_to:through,则可以在此处使用,但实际上,在Graph表上使用用户id是不必要的-可以通过数据集检索图形的用户。

因此,如果我有一个用户id,如“3”,如何获取该用户的所有图形?
all_graphs=User.find(3).graphs
会起作用吗?它会起作用,因为用户与图形之间仍然存在关联。从另一种方式从图形返回到用户,您可以在图形模型中委托:User调用(例如,
delegate:User,to::dataset
),这意味着您可以调用
Graph.find(3).User
(这将是
Graph.find(3).dataset.User
)的快捷方式)。
id, dataset_id, type # Do I need "user_id" in here also?