Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails:创建父级,如果没有';不存在,正在创建子记录_Ruby On Rails_Nested Forms_Nested Attributes - Fatal编程技术网

Ruby on rails rails:创建父级,如果没有';不存在,正在创建子记录

Ruby on rails rails:创建父级,如果没有';不存在,正在创建子记录,ruby-on-rails,nested-forms,nested-attributes,Ruby On Rails,Nested Forms,Nested Attributes,以下方面有什么最佳做法吗 我有很多库存的制造商型号 在我的新库存表单中,我需要一个映射到Manufacturer.name的字段,以便 在应用程序中提交新的库存表单: 从表单中搜索具有“名称”的制造商 如果存在,则将id分配给@inventory.manufacturer\u id并保存@inventory 如果不存在,则使用表单中的“名称”创建制造商,将id分配到@inventory.manufacturer\u id并保存 对新的库存表单进行验证 这样,如果库存表单在“名称”以外的字段

以下方面有什么最佳做法吗

我有很多库存的制造商型号

在我的新库存表单中,我需要一个映射到Manufacturer.name的字段,以便 在应用程序中提交新的库存表单:

  • 从表单中搜索具有“名称”的制造商
    • 如果存在,则将id分配给@inventory.manufacturer\u id并保存@inventory
    • 如果不存在,则使用表单中的“名称”创建制造商,将id分配到@inventory.manufacturer\u 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
类资源清册value)
结束
...
结束

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

否则-这看起来不错!!我明天执行,然后回来。谢谢