在集合和grand-parent上使用.where创建范围

时间:2016-03-22 16:08:10

标签: ruby-on-rails postgresql ruby-on-rails-5

我有三个模型,包括祖父母,父母,子女关系:OrganizationCategoryPost

我正在尝试在Post模型中创建一个范围,首先在传递的集合上使用where,然后在祖父上使用<{p}}:

scope :ready, -> {
  where("next_setup_at < ?", DateTime.current)
    .joins(category: :organization)
    .where("organizations.active = ?", true)
}

但是Postgres给我一个错误:

  

ActiveRecord :: StatementInvalid:PG :: AmbiguousColumn:ERROR:列引用“next_setup_at”不明确   第1行:... zations“。”id“=”类别“。”organization_id“WHERE(next_setup ...                                                                ^

     

:SELECT“posts”。* FROM“posts”INNER JOIN“categories”ON“categories”。“id”=“posts”。“category_id”INNER JOIN“organizations”ON“organizations”。“id”=“类别“。”organization_id“WHERE(next_setup_at&lt;'2016-03-22 15:57:19.971887')AND(organizations.active ='t')

1 个答案:

答案 0 :(得分:2)

查看您的import {bootstrap} from 'angular2/platform/browser'; import {AppComponent} from './app.component'; bootstrap(App); /*should be AppComponent */ 条款。第二个在定义要查询的列时做得很好。

EXCEPTION: Token must be defined!     angular2.dev.js:23740

第一个没有。

.where

您必须定义where("organizations.active = ?", true) 列引用的表。导致

where("next_setup_at < ?", DateTime.current)

进一步改善

您可以轻松指定要在纯ActiveRecord中引用的表,如下所示:

next_setup_at