У меня есть одна проверка модели, как показано ниже
validates :value, presence: true, allow_blank: false, uniqueness: { scope: [:account_id, :provider] }
Я хочу добавить еще одно условие case_sensitive внутри уникальности, как показано ниже
validates :value, presence: true, allow_blank: false, uniqueness: { scope: [:account_id, :provider], case_sensitive: :is_email? }
def is_email?
provider != email
end
Короче говоря, оно не должно проверять case_sensitive, когда провайдер электронной почты - это не электронная почта, но в настоящее время он не работает, он ожидает истину или ложь только без какого-либо метода или каких-либо условий.
Как мне добиться этого в рельсах? Я уже написал пользовательскую проверку, потому что она не работала.
ОБНОВЛЕНИЕ
, если я добавлю еще одну проверку, как показано ниже
validates_uniqueness_of :value, case_sensitive: false, if: -> { provider == 'email' }
Это дает мне ту же ошибку дважды :value=>["has already been taken", "has already been taken"]