2015-11-19 2 views
0

У меня есть таблица данных вызова, и я хочу запросить все безответные вызовы, а это значит, что время начала вызова равно времени окончания вызова. Я в настоящее время использую следующий простой SQL, который работает, как ожидалось:ActiveRecord - Сравнение двух значений в одной строке

select * from calls where calls.start = calls.end 

мне было интересно, если есть более «рельсы» способ сделать это с помощью ActiveRecord запроса интерфейса. В идеале я хотел бы настроить область в моей модели Call, которая возвращает мне все неотвеченные вызовы. Что-то вроде:

scope :unanswered, -> { where(start: :end) } 

выше не работает, так как Rails обрабатывает :end как строку вместо end столбца в БД.

Я использую PostgreSQL в качестве моего механизма БД.

ответ

0

Я думаю, что вы можете сделать следующее:

scope :unanswered, -> (end) { where(start: end) } 
+0

Это означает, что вы можете указать значение вместо 'end', которое будет использоваться в области. Не совсем решает мою проблему. –

1

SQL-запрос

select * from calls where calls.start = calls.end 

может быть сделано в rails образом, используя сферы следующим образом:

scope :unanswered, -> { where('start = end') } 
+0

Это не работает точно так, как указано, но когда я делаю 'scope: unanswered, -> {где ('calls.start = calls.end')}' он работает. Благодаря! –

+0

Да, конечно ... потому что это в сфере. Рад помочь вам :) – Brozorec

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