以下任何最佳做法?:

我有具有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


在这种情况下,您应该在“库存”表单上输出制造商名称文本字段。

10-08 04:22