【发布时间】:2017-04-06 13:50:12
【问题描述】:
我有以下型号:
class Address < ActiveRecord::Base
has_many :service_records
attr_accessor :service_record
end
class ServiceRecord < ActiveRecord::Base
belongs_to :address
belongs_to :plant
end
class Plant < ActiveRecord::Base
has_one :service_record
end
我想执行一个查询,左连接地址上的每个服务记录和服务记录上的每个工厂。因此,例如,如果我有一个包含 3 个服务记录的地址,我希望获得 3 个结果,这些结果重复每个服务记录的地址字段,同时还包含每个服务记录的工厂信息。
到目前为止,我的查询看起来像这样(使用 Rails 5):
Address.left_joins(service_records: :plant)
这会返回正确数量的重复地址结果(即上面示例中的 3 个)。
我正在努力弄清楚的下一步是将生成的查询作为 JSON 结构返回,其中包含每个地址和每个唯一的服务记录。所以是这样的:
[
{
id: 1,
address: "1234 Street Rd",
service_record: {
id: 1
plant: {
id: 1
}
}
},
{
id: 1,
address: "1234 Street Rd",
service_record: {
id: 2
plant: {
id: 2
}
}
},
{
id: 1,
address: "1234 Street Rd",
service_record: {
id: 3
plant: {
id: 3
}
}
}
]
如果您注意到,我的地址模型上确实有一个 attr_accessor :service_record,但是我不确定这是获得所需内容的正确方法。任何帮助或替代方法来获得我正在寻找的东西将不胜感激!
【问题讨论】:
标签: mysql ruby-on-rails activerecord ruby-on-rails-5