Использование: reject_if для проверки уникальности - PullRequest
0 голосов
/ 12 марта 2012

Привет переполнения стека,

Я уже некоторое время использую accepts_nested_attributes_for со встроенными моделями. Для массового присваивания и самоцвета вложенных форм Райанба это практически необходимо. Обычно он используется таким образом с лямбда-функцией для проверки хэша параметров, чтобы массовое присваивание не завершалось ошибками валидации (хотя они все еще действительны), если пользователь не размещает никаких входных данных.

class User
  include Mongoid::Document 
  embeds_many :comments
  accepts_nested_attributes_for :comments, :reject_if => lambda { |c| c[:comment].blank? }
end

class Comment
  include Mongoid::Document 
  embeds_in :user

  fields :comment

  validates_presence_of :comment
end

Я предполагаю, что с: reject_if это удаляет пробелы в параметрах перед проверкой. Что я хочу сделать, так это оценить уникальность с помощью validates_uniqueness_of и лямбда-блока.

Я мог бы перебирать комментарии (self.comments), но я предполагаю, что есть лучший способ сделать это. Я знаю, что это также приведет к тому, что ошибки проверки уникальности будут молча терпеть неудачу, но мне просто интересно, как это можно сделать.

Есть мысли?

1 Ответ

0 голосов
/ 14 марта 2012

Ответ был в середине соответствующего столбца здесь: validates_uniqueness_of в разрушенных вложенных рельсах модели

Проверка может быть изменена, чтобы не добавлять ошибки, а отклонять ошибочные данные.Это пройдет проверку уникальности во встроенной модели при удалении дубликатов (с сообщением, что это было сделано).

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