У меня возникли проблемы с проверкой в моей RoR Модель:ActiveRecord проблема пользовательских проверки
def save self.accessed = Time.now.to_s self.modified = accessed validate_username super end
def validate_username if User.find(:first, :select => :id, :conditions => ["userid = '#{self.userid}'"]) self.errors.add(:userid, "already exists") end end
Как вы можете видеть, я заменил метод сохранения этой модели с моим собственным, называя validate_username до того Я вызываю родительский метод .save. Моя проблема заключается в том, что, хотя ошибка добавляется, Rails по-прежнему пытается вставить новую строку в базу данных, даже если имя пользователя является дубликатом. Что я здесь делаю неправильно?
PS: Я не использую validate_uniqueness_of
из следующего выпуска с чувствительностью к регистру: https://rails.lighthouseapp.com/projects/8994/tickets/2503-validates_uniqueness_of-is-horribly-inefficient-in-mysql
Обновление: Я пытался weppos решение, и он работает, но не совсем, как хотелось бы, чтобы это. Теперь поле становится помеченным как неверное, но только если все остальные поля верны. Я имею в виду, например, если я вводил неверный адрес электронной почты, поле электронной почты помечено как es, а поле userid - нет. Когда я отправляю правильный адрес электронной почты, тогда поля userid будут помечены как неправильные. Надеюсь, вы, ребята, понимаете, что я имею в виду: D
Update2: Данные должны быть проверены таким образом, чтобы не было возможности вставлять дубликаты идентификаторов пользователей в базу данных без учета регистра. Идентификаторы пользователя имеют формат «пользовательский домен», например. "Test-something.net". К сожалению, validates_uniqueness_of :userid
не работает, он пытается вставить «test-something.net» в базу данных, хотя уже есть «Test-something.net». validate_username должно было быть моим (быстрым) обходным решением для этой проблемы, но это не сработало. Решение weppos действительно работало, но не совсем так, как я хочу (как объяснялось в моем первом обновлении).
Не понял это еще ... кто-нибудь?
С наилучшими пожеланиями, x3ro
Можете ли вы дать более подробную информацию о том, как данные должны быть проверены? –