Rails postgres错误:ActiveRecord :: StatementInvalid异常:PG :: AmbiguousColumn:错误:列引用“ sample_id”不明确

阿比

我在Rails用户模型中有一个作用域(此作用域正在使用每个模型):

scope :only_sample,                       -> { only_sample_items }

而“ only_sample_items”方法是:

return where("sample_id IS NULL OR sample_id NOT IN (?) OR sample_id IN (?)", inactive_sample_ids, active_sample_ids)

当我使用Projects表将User加入并出现此错误时。我知道在用户表和项目表中都存在sample_id。这引起了歧义。

谁能告诉我避免该错误的方法,如何修改'only_sample_items'方法?

阿比

最终,我使用Arel摆脱了歧义。

我将查询更改如下:

item_table = klass.arel_table # klass be User, Project etc
where(item_table[:sample_id].eq(nil).or(item_table[:sample_id].not_in inactive_sample_ids).or(item_table[:sample_id].in active_sample_ids)) 

现在实际上发生了什么,Arel通过根据我调用范围的模型添加table_name.coulmn名称本身来处理查询。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档