2010-08-27 25 views
3

的最佳做法以下?:軌:建立家長,如果它不存在,whilte創建子記錄

我有HAS_MANY庫存

在我的新清單的形式製造商模式我想現場映射到Manufacturer.name這樣,當一個 提交新的庫存形成應用:

  • 搜索製造商與形式的「名」
    • 如果存在,則將該ID分配給@ inventory.manufacturer_id並保存@inventory
    • 如果它不存在,則從表單中創建具有「名稱」的製造商,將該ID分配給@ inventory.manufacturer_id並保存
    • 有驗證新的庫存表上工作
      • 例如,如果庫存表上「姓名」
        • 其他字段驗證失敗的「名稱」字段將被重新填充任何的用戶輸入(但是除非表單通過val,否則不會創建新的製造商idation)

回答

3

你可以試試這樣:

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文本字段。

+0

恐怕 - 這看起來不錯!我會明天執行並回來。謝謝! – telecasterrok 2010-08-30 09:46:32

相關問題