Как проверить уникальность поля с областью для перечисления значения - PullRequest
0 голосов
/ 10 октября 2019

У меня есть таблица сообщений, которая имеет поле enum type_of_message [: private,: public] и принадлежит пользователю, я хочу проверить, что пользователь может отправлять только одно публичное сообщение.

validates_uniqueness_of :user, scope: :type_of_comment[:review]

Ответы [ 2 ]

1 голос
/ 10 октября 2019

Вы можете просто использовать:

validates_uniqueness_of :user, scope: :type_of_message

Если вы просто хотите иметь проверку для определенного type_of_message, например, я бы предложил вам написать собственную проверку для него.

validate :one_public_comment_per_user, on: :create

private

def one_public_comment_per_user
  if user.present? && user.messages.public.present?
    errors.add(:base, "only one public comment is allowed per user.")
  end
end
0 голосов
/ 10 октября 2019

Я получил его на работу, просто передавая обзор в виде строки вместо символа. validates_uniqueness_of :user, scope: :type_of_comment['review']

...