首页 > 解决方案 > Rails activerecord找到父给定子模型ID,当父有一个字段是子ID数组时

问题描述

请帮忙。我有一个名为 Estate 的 Activerecord 对象。在 Estate 内部,有一个字段是另一个名为 House 的 Activerecord 对象的 id 数组。所以它看起来像这样;Estate ... houses: [an_array_of_house_ids]House id:value .... 房子是它自己的东西,与庄园没有关联。现在,如果我有一个任意的house_id,我如何查询 activerecord 以获取这所房子所属的 Estate,或者它不属于我数据库中的任何 Estate?

例如,假设数据库看起来像这样;

Estate
_____________________________________________
| estate_id   |    houses      |other_fileds|
---------------------------------------------
|       1     | [1, 2, 3, 4]   |      .     |
---------------------------------------------
|       2     | [5, 15, 3, 4] |      .     |
---------------------------------------------
|       3     | [6, 7, 8, 4] |      .     |
---------------------------------------------

# The houses fields has arrays of house_ids from the table below

House
_____________________________________________
| house_id    | other_fileds|
---------------------------------------------
|       1     |       .     |
---------------------------------------------
|       2     |       .     |
---------------------------------------------
|       3     |       .     |
---------------------------------------------

假设我有 house_id,假设 house_id=3,那么获取这所房子的 Estate_id 的最佳方式是什么?

标签: ruby-on-railsrubyactiverecord

解决方案


在 House 类中,您可以belongs_to像这样指定与 lambda 的关联

class House < ApplicationRecord
...
belongs_to :estate, ->(house) { Estate.where("?=ANY(houses)", house.id).first }
...
end

推荐阅读