2016-03-28 2 views
0

Я использую Rails 4 application, где используется запрос.Ошибка в условии ИЛИ включает запрос Rails 4

Query: @courses = Course.includes(:translations).unpublished_status 

Где unpublished_status is scope написать в разделе Модель. (Смотрите ниже): Затем

scope :unpublished, -> { where(published: false) } 
scope :status, -> { where.not(status: 'active') } 
scope :unpublished_status, -> { unpublished.where.or(status)} 

Когда я запускаю код получил ниже ошибки:

NoMethodError at /api/v1/unpublished_courses 
============================================ 

> undefined method `or' for # 
<Globalize::ActiveRecord::QueryMethods::WhereChain:0x007fe05dbc70d8> 

Где фактический вопрос не нашел. У кого-то есть идея.

Благодаря

+0

'where.or' не доступен в Rails 4, вы можете использовать его как:' scope: unpublished_status, -> {unpublished || статус} ' –

ответ

1

where.or is available only in rails 5 you can check this link .

К 'ИЛИ' прицелы вы можете сделать:

scope :unpublished_status, -> { unpublished || status} 
    **OR** 
Course.where('published = ? OR status != ?', false, 'active') 
0
undefined method `or' for # 
<Globalize::ActiveRecord::QueryMethods::WhereChain:0x007fe05dbc70d8> 

Как говорит undefined method для ActiveRecord::QueryMethods::WhereChain:

означает or method не доступен. Чтобы исправить это or_scopes.rb, вы сможете использовать OR или ваши области.

Надеюсь, это поможет вам !!!

Смежные вопросы