2010-08-27 96 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

相关问题