2012-06-15 4 views
0

В моей модели я хотел бы создать область, в которой использует метод, который также находится в моей модели.Rails 3 - создать область, которая использует метод

У меня есть следующий метод модели:

def is_paired 
    ! pairing_id.nil? 
    end 

Я хотел бы сделать сферу охвата, которая выглядит примерно так

scope :paired, where(:is_paired => true) 

Но когда я делаю, я получаю сообщение об ошибке:

SQLite3::SQLException: no such column: participants.is_paired: SELECT "participants".* F... 

Как создать область, в которой использует метод в моей модели ???

+0

Следующий код работает аналогично сфере действия. Однако он возвращает массив, а не ActiveRecord :: Relation. def self.paired self.all.find_all {| item | item.is_paired} end – Selah

ответ

1

Вы не можете. В основном методы, используемые в таких областях, как where, order ect. «переводится» на sql-запросы. Rails не знает, как перевести пользовательские методы в sql-запросы. В любом случае вы можете использовать следующий подход: scope :paired, where('pairing_id IS NOT NULL') Для получения дополнительной информации вы можете проверить: Rails where condition using NOT NULL

+0

Спасибо ... ваш ответ прояснил мне все. – Selah

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