rails: создать Parent, если он не существует, при создании дочерней записи

Любые лучшие практики для следующего?:

У меня есть модель производителя с has_many Inventory

В моей новой форме Inventory мне нужно поле, которое сопоставляется с Manufacturer.name, чтобы при отправке новой формы Inventory приложение:

  • searches for a manufacturer with the 'name' from the form
    • if it exists then assign the id to @inventory.manufacturer_id and save @inventory
    • если он не существует, создайте производителя с «именем» из формы, назначьте идентификатор @inventory.manufacturer_id и сохраните
    • have validations work on the new Inventory form
      • such that, if the the Inventory form fails validation on a field other than 'name'
        • the 'name' field will be repopulated with whatever the user entered (but a new manufacturer is not created unless the form passes validation)

person telecasterrok    schedule 27.08.2010    source источник


Ответы (1)


Вы можете попробовать так:

class Inventory < ActiveRecord::Base

  ...

  belongs_to :manufacturer

  ...

  def manufacturer_name
    manufacturer && manufacturer.name
  end

  def manufacturer_name=(value)
    self.manufacturer = Manufacturer.find_by_name(value)
    self.manufacturer ||= Manufacturer.new(:name => value)
  end

  ...

end

В этом случае вы должны вывести текстовое поле Manufacturer_name на форму Inventory.

person lest    schedule 28.08.2010
comment
чтобы - это выглядит хорошо !! Завтра реализую и вернусь. Благодарность! - person telecasterrok; 30.08.2010