以下任何最佳做法?:
我有具有has_many库存的制造商模型
在我的新清单表单中,我想要一个映射到Manufacturer.name的字段,以便当一个
通过应用程序提交新的广告资源表单:
从表单中搜索带有“名称”的制造商
如果存在,则将ID分配给@ inventory.manufacturer_id并保存@inventory
如果不存在,则使用表单中的“名称”创建制造商,将ID分配给@ inventory.manufacturer_id并保存
在新的库存表单上进行验证
这样,如果“广告资源”表单未通过“姓名”以外的字段的验证,
用户输入的内容将重新填充“名称”字段(但除非表单通过验证,否则不会创建新的制造商)
最佳答案
您可以这样尝试:
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
在这种情况下,您应该在“库存”表单上输出制造商名称文本字段。