Как ограничить не пустое поле в ruby ​​на рельсах активной записью where - PullRequest
1 голос
/ 27 марта 2019

Я очень плохо знаком с ruby ​​и хочу ограничить записи, которые не имеют пустых значений поля :c, следующим образом.

Foo.where(:a => "x", :b => "y", :c ?? "")

Моя проблема в том, что я не знаю, какой оператор ?? мне нужноиспользуйте для этого или если оператор для этого вообще существует.

Когда я писал вопрос, я наткнулся на where chains в документации ruby ​​on rails api .Если я напишу предложение where следующим образом, я получу то, что хочу.

Foo.where(:a => "x", :b => "y").where.not(:c => "")

Пока все хорошо, цепочка where дает мне то, что я хочу.Но есть ли способ использовать оператор ??, чтобы свести все это в простую инструкцию where, как в моем первом примере?

1 Ответ

1 голос
/ 27 марта 2019

Чтобы иметь правильный синтаксис, вы должны использовать => вместо ??. Это потому, что вы передаете хэш методу where.

Как вы упомянули, вы можете связать where и where.not. Другое решение состоит в том, чтобы использовать один where, как показано ниже:

Foo.where("a = ? and b = ? and c != ''", 'x', 'y')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...