Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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_Join_Activerecord - Fatal编程技术网

Sql 将列与Rails中ActiveRecord查询的结果合并

Sql 将列与Rails中ActiveRecord查询的结果合并,sql,ruby-on-rails,join,activerecord,Sql,Ruby On Rails,Join,Activerecord,我在Ruby on Rails 4中有以下三个表: “决策”表: 。。。并让ActiveRecord从DecisionDatafields链接表中检索第一个决策的数据字段列表,以及相应的min_分数值 现在,上面的查询将返回如下内容: Decision.first.datafields #<ActiveRecord::Relation [#<Datafield id: 1, title: "DF1", created_at: "2015-03-28 09:59:26", updat

我在Ruby on Rails 4中有以下三个表:

“决策”表:

。。。并让ActiveRecord从DecisionDatafields链接表中检索第一个决策的数据字段列表,以及相应的min_分数值

现在,上面的查询将返回如下内容:

Decision.first.datafields
#<ActiveRecord::Relation [#<Datafield id: 1, title: "DF1", created_at: "2015-03-28 09:59:26", updated_at: "2015-03-28 09:59:26">, #<Datafield id: 2, title: "DF2", created_at: "2015-03-28 09:59:26", updated_at: "2015-03-28 09:59:26">]>
#<ActiveRecord::Relation [#<Datafield id: 1, title: "DF1", created_at: "2015-03-28 09:59:26", updated_at: "2015-03-28 09:59:26", min_score: 5>, #<Datafield id: 2, title: "DF2", created_at: "2015-03-28 09:59:26", updated_at: "2015-03-28 09:59:26, min_score: 7">]>
#
。。。这很好,但我希望它看起来像这样:

Decision.first.datafields
#<ActiveRecord::Relation [#<Datafield id: 1, title: "DF1", created_at: "2015-03-28 09:59:26", updated_at: "2015-03-28 09:59:26">, #<Datafield id: 2, title: "DF2", created_at: "2015-03-28 09:59:26", updated_at: "2015-03-28 09:59:26">]>
#<ActiveRecord::Relation [#<Datafield id: 1, title: "DF1", created_at: "2015-03-28 09:59:26", updated_at: "2015-03-28 09:59:26", min_score: 5>, #<Datafield id: 2, title: "DF2", created_at: "2015-03-28 09:59:26", updated_at: "2015-03-28 09:59:26, min_score: 7">]>
#
不同之处在于,DecisionDatafield链接表中的min_分数已连接到查询返回的记录

谢谢

这可能有效(尚未测试):

类决策

用Decision调用它。首先,数据字段

似乎以下方法有效:

Datafield.where(id: self.decision_datafields.select("datafield_id")).includes(:decision_datafields).joins("left join decision_datafields on datafields.id = decision_datafields.datafield_id").select("datafields.*, decision_datafields.min_score as min_score")
然而,当使用Rails控制台时,min_分数似乎不会添加到记录中


但是,调用
Decision.first.datafields.first.minu score
会返回一个值(通过
Decision.first.datafields.first

查看记录时,它不会显示出来,谢谢,但不幸的是,它返回的内容与原始查询相同。嗯,看起来没有调用
datafields
方法,而是使用默认的活动记录关系。请尝试将方法名称更改为e> 数据字段;我更新了答案。我目前正在控制台中使用:
数据字段。包括(:decision\u datafields)。选择(“datafields.*,decision\u datafields.min\u score”)。其中(id:d.decision\u datafields.select(“Datafield\u id”)。首先
它仍然没有将“min\u score”值附加到返回的记录中。
Datafield.where(id: self.decision_datafields.select("datafield_id")).includes(:decision_datafields).joins("left join decision_datafields on datafields.id = decision_datafields.datafield_id").select("datafields.*, decision_datafields.min_score as min_score")