我有一张Dogs and Owners表 我希望得到一个结果,其中结果对象具有狗和所有者的字段,因此我可以稍后使用此对象,转换为json等,而无需再次查询数据库或点击缓存
所以,如果我有Dog.collie
,并且每只狗都有id
,breed
,age
和owner_id
,并且每位所有者都有id
},name
-
我想用dog id,breed和所有者名称
创建一个新对象 Dog.joins(:owner).collie
将返回一个狗对象列表,我想做dog.owner
,它会点击缓存。如果我将其转换为json,则缺少所有者名称
在http://guides.rubyonrails.org/active_record_querying.html#selecting-specific-fields上它说我可以返回具有特定字段的模型实例。
如何返回一个包含3个字段的对象 - 狗的2个和所有者的1个(显然没有定义这样的对象,但让Rails这样做)
答案 0 :(得分:0)
你可以做到
Dog.includes(:owner)
但如果您想要的只是名称,那么您可以委托给所有者
Class Dog < ActiveRecord::Base
delegate :name, to: :owner, prefix: true, allow_nil: true
end
允许你这样做
@dog = Dog.first
@dog.owner_name => 'Bob'
答案 1 :(得分:0)
怎么样?
class Dog
belongs_to :owner
end
dogs = Dog.all
dogs.to_json(:include => :owner)