как проверить рельсы, связанные с моделью, введенной в текстовое поле - PullRequest
0 голосов
/ 13 апреля 2011

Я использую рельсы 2.3.

Как мне проверить поле привязки принадлежащих принадлежностей, которое вводится с помощью текстового поля?например, запись в блоге относится к категории, но она вводится не с помощью выбора, а как название категории (предположим, уникальное) в текстовом поле.

Возможные ошибки: неправильный формат, такая категория отсутствует в БД.

Если я назначаю строку непосредственно для ассоциации, она выдает ошибку с AssociationTypeMismatch, поэтому я не могу назначить этому атрибуту и ​​затем использую пользовательский метод before_validate.работать в контроллере и добавить в коллекцию ошибок модели, она все еще сохраняется (я думаю, что коллекция ошибок очищается до начала проверки).

Как мне это сделать, но также использовать стандартный сбор ошибок?

1 Ответ

0 голосов
/ 13 апреля 2011

Возможно, вы захотите использовать пустое текстовое поле с функцией автозаполнения JavaScript. Поместите скрытое поле в форму для идентификатора для этой ассоциации. Когда JS возвращает список совпадений, включите идентификаторы и заполните поле скрытого идентификатора, когда элемент выбран.

В противном случае это может помочь. Обратите внимание, что это непроверенный код.

# Assumed that "Obj" is the class of your belongs_to association

attr_accessor :obj_name
def obj_name= value
  self.obj = Obj.find_by_name(params[:obj_name])  
end

validate :validate_obj
def validate_obj
  # If there's no obj, report an error on our pseudo-field
  return if self.obj.present?
  return if self.obj_name.blank? # Allow empty object if blank name was specified
  error.add(:obj_name, "does not appear to be a valid obj name")
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...