Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.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
Sql Rails ActiveRecord::使用包含模型的关系对象_Sql_Ruby On Rails_Ruby - Fatal编程技术网

Sql Rails ActiveRecord::使用包含模型的关系对象

Sql Rails ActiveRecord::使用包含模型的关系对象,sql,ruby-on-rails,ruby,Sql,Ruby On Rails,Ruby,我需要从两个相似但不相同的独立模型中检索信息。我试着做像这样的事情 @group = Mymodel.find_by_sql("SELECT id FROM Mymodels UNION SELECT id FROM AnotherModels") 我已经研究了一些方法,但是它们返回一个活动对象数组,而不是一个 ActiveRecord::关系,这是我的应用程序的许多功能正常工作所必需的 有没有办法返回包含两个表的并集的ActiveRecord::Relation对象 我试过类似的方法

我需要从两个相似但不相同的独立模型中检索信息。我试着做像这样的事情

@group = Mymodel.find_by_sql("SELECT id FROM Mymodels 
  UNION SELECT id FROM AnotherModels")
我已经研究了一些方法,但是它们返回一个活动对象数组,而不是一个 ActiveRecord::关系,这是我的应用程序的许多功能正常工作所必需的

有没有办法返回包含两个表的并集的ActiveRecord::Relation对象

我试过类似的方法

@group = Mymodel.find_by_sql("SELECT id FROM Mymodels 
  UNION SELECT id FROM AnotherModels")
并且还探讨了如何使用Model.where方法,但是该方法不能返回ActiveRecord::Relation

编辑:


为了明确起见,我需要返回ActiveRecord::Relation,它是两个表的并集或合并

您是否尝试过
MyFirstModel.joins(:my_second_models)
?查看API中的详细信息
joins


编辑:单表继承是解决此问题的更好方法。请参阅下面的评论。

尝试以下内容:

Model.joins(:other_model).where("attr1" = :attr1,
                               { attr1: "example" }).group(:attr1)

由于您评论了
where
,我在调用中添加了
where
方法。您还可以使用
:group
将所有内容分组。

嘿,谢谢,但不确定这就是我要找的。我不想将这两个表连接在一起,尽管我需要返回一个包含两个模型的所有对象的记录。这更像是工会啊,我现在更了解你的问题了。我认为您应该研究单表继承:基于同一个数据库表创建两个模型。通过这种方式,您可以通过关联轻松地提取所有内容,但您可以为每个模型创建独特的属性和方法。很酷,我已经研究过这一点,但希望在扩展现有应用程序时有一种更简单的方法。另外,将有相当多的空列。但似乎这可能是处理空列的唯一方法两个选项:创建一个
与所有“额外”列关联,以便它们可以存储在另一个表中,或者创建一个text
data
列和
serialize:data
,这将允许您在散列中存储附加属性(缺点:您将无法使用SQL搜索它们)。或者,您可以在以后有足够的容量时担心效率(这是我选择的解决方案!)