具有混合父级和子级属性的rails4条件

时间:2015-10-17 13:10:02

标签: ruby-on-rails-4.2

以下条件

Contractor.includes(:contractorusers).where(['building_id = ? AND contractorusers.user_id = ?', 21, 72]).all

根据数据库PG::UndefinedTable: ERROR: missing FROM-clause entry for table "contractorusers"生成投诉,尽管数据库确实已经定义了

  create_table "contractorusers", force: :cascade do |t|
    t.integer  "contractor_id"
    t.integer  "user_id"

因此语法显然需要修复。怎么样?

1 个答案:

答案 0 :(得分:0)

您写的查询将无法正常工作,因为包含将首先调用父级以获取与id相关的合同,然后将搜索具有由父查询返回的ID数组的承包商。

试试这个:

Contractor.joins(:contractorusers).where("building_id = ? AND contractorusers.user_id = ?", 21, 72)