Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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将两个关系合并为一个结果_Sql_Ruby On Rails_Activerecord_Join - Fatal编程技术网

Sql Rails将两个关系合并为一个结果

Sql Rails将两个关系合并为一个结果,sql,ruby-on-rails,activerecord,join,Sql,Ruby On Rails,Activerecord,Join,我有一张狗和主人的桌子 我想得到一个结果,结果对象包含dog和owner字段,这样我以后就可以使用这个对象,转换成json等,而无需再次查询数据库或点击缓存 所以如果我有狗,柯利牧羊犬,每只狗都有一个id,品种,年龄和主人的id,每个主人都有id,名字- 我想用狗的id、品种和主人的名字创建一个新对象 Dog.joins:owner.collie将返回一个Dog对象列表,我想做Dog.owner,它将命中缓存。如果我将其转换为json,则缺少所有者名称 上面说我可以返回带有特定字段的模型实例 如

我有一张狗和主人的桌子 我想得到一个结果,结果对象包含dog和owner字段,这样我以后就可以使用这个对象,转换成json等,而无需再次查询数据库或点击缓存

所以如果我有狗,柯利牧羊犬,每只狗都有一个id,品种,年龄和主人的id,每个主人都有id,名字-

我想用狗的id、品种和主人的名字创建一个新对象

Dog.joins:owner.collie将返回一个Dog对象列表,我想做Dog.owner,它将命中缓存。如果我将其转换为json,则缺少所有者名称

上面说我可以返回带有特定字段的模型实例

如果不定义这样的对象,我如何返回一个包含3个字段(2个是dog字段,1个是owner字段)的对象,但是让Rails来完成它

狗。包括:主人

但是,如果您只需要名称,则可以将其委托给所有者

Class Dog < ActiveRecord::Base
  delegate :name, to: :owner, prefix: true, allow_nil: true
end
那怎么办

class Dog
  belongs_to :owner
end

dogs = Dog.all

dogs.to_json(:include => :owner)

是的,但是在那之后我想以json的形式返回结果,所以我需要在相同的hash/objectOk中的所有内容,然后要么按照bekicot说的做,要么覆盖to_json方法查看此链接以获得所有可能的选项请发布更多代码示例和一些psuedo代码,以了解您想要做什么。你的问题不清楚。我会尽力解释,我知道rails可以做到这一点,我只是不知道如何称呼它
class Dog
  belongs_to :owner
end

dogs = Dog.all

dogs.to_json(:include => :owner)