【发布时间】:2020-02-22 00:14:30
【问题描述】:
我想返回所有没有asscoiation_id 的关联的Thing 模型对象,有没有更好的方法可以在没有include 和except 的情况下做到这一点?
# Thing.rb
belongs_to :object_a
belongs_to :object_b
# create_thing.rb
def change
create_table :things, id: false do |t|
t.string :id, limit: 36, primary_key: true
t.string :object_a_id, foreign_key: true
t.string :object_b_id, foreign_key: true
t.timestamps
end
end
# things_controller.rb
render json: Thing.all, include: [:object_a, :object_b]
output => {
id: ....
object_a_id: 'object_a_id',
object_b_id: 'object_b_id',
object_a: {
id: object_a_id
...
},
object_b: {
id: object_b_id
...
}
我知道我可以这样做来得到我想要的,但我想知道是否有一种 DRY 方法可以在没有所有包含和除外的情况下做到这一点。
render json: Thing.all, include: [:object_a, :object_b], except: [:object_a_id, :object_b_id]
output => {
id: ....
object_a: {
id: object_a_id
...
},
object_b: {
id: object_b_id
...
}
【问题讨论】:
-
你最后建议的方式非常干燥。你对此有什么感觉?
-
没有包含会很优雅,除了
render json: Thing.all, include: [:object_a, :object_b], except: [:object_a_id, :object_b_id]之外,因为会有很多这样的端点 -
一开始我以为我设置的表关系不正确,因为我一直认为可以选择获取具有完整关联对象的模型或仅获取
the association_id
标签: ruby-on-rails activerecord activemodel