如题: 遇上这样一个问题,存在三个表:user namespace group 其中,group 是单表继承的 namespace ,通过在其中,user 和 namespace 的对应关系为 has_one, user 与 group 的关系为 has_many 因为业务调整,先在需要将 namespace 中的 type 字段调整为 group,然后新增一个 namespace 给用户,就出现了这样一个问题:修改为 group 后 group 的 id 比 namespace 的 id 要小 这就导致通过关系查询 user 的 namespace 查找出的是 group 的问题,其生成的 sql 如下:
SELECT `namespaces`.* FROM `namespaces` WHERE `namespaces`.`id` = 用户id LIMIT 1
关系中指定了限制条件
has_one :namespace, dependent: :destroy, foreign_key: :owner_id, class_name: "Namespace", conditions: 'type IS NULL'
明显,限制条件 type is NULL 没有生效,但是,如果将 has_one 改为 has_many 限制条件就生效了
请问,如何才能是 has_one 的限制条件生效 通过 google 和查询文档,确定 conditions=>{:type=> nil}这样的写法支持但并未生效,该文档指定的 rails 版本为 3.2.13 注:我的 rails 版本是 3.2.16