Столбец перечисления запроса активной записи - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть запрос, который выглядит так

where("user_id = ? OR privacy = ?", user_id, :public_activity)

и перечисление

enum privacy: [:public_activity, :friends_activity, :private_activity]

:public_activity не работает в этом запросе и просто отправляется в виде строки. Есть ли какой-нибудь чистый способ написать этот запрос без использования целого числа, которое будет трудно понять при чтении запроса?

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

Следуя документации enum, вы сможете автоматически использовать область, определенную enum:

Model.where(user_id: user_id).or(Model.public_activity)
0 голосов
/ 08 сентября 2018

Вы можете использовать ключ для получения целого числа, вот пример :

# app/models/user.rb
class Model < AR
  enum privacy: [:public_activity, :friends_activity, :private_activity]
end

Получить целое число состояния:

Model.privacies[:public_activity] => 0

Метод where:

where("user_id = ? OR privacy = ?", user_id, Model.privacies[:public_activity])

Прочитать документацию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...