在数据库中创建具有嵌套属性的记录

时间:2012-12-04 14:14:16

标签: ruby-on-rails

我有以下2个型号。

class Expression < ActiveRecord::Base

has_many :patterns, :foreign_key => "PTN_EXPRESSION_FK", :dependent => :destroy
accepts_nested_attributes_for :patterns, :allow_destroy => true

end



class Pattern < ActiveRecord::Base

belongs_to :expression, :foreign_key => :PTN_EXPRESSION_FK

end

我想创建一个记录(带有嵌套属性)并将其存储在表中而不使用表单。

Expression.create(:EXP_VALUE  =>  @exp.val,
          :EXP_ADD_VALUE =>  @exp.add_val    
          )

上面的代码创建了一个表达式记录并将其保存在Expression表中。

我还想将模式值传递给上面的代码,以便在存储表达式的同时将模式值存储在模式表中。

如何在上面的“创建”代码中传递嵌套属性值?

非常感谢你的建议。

1 个答案:

答案 0 :(得分:0)

嵌套属性可以是这样的:

Expression.create(:EXP_VALUE  =>  @exp.val,
      :EXP_ADD_VALUE =>  @exp.add_val,
      :patterns_attributes => [
        '0' => {:pattern_attr1 => ..., pattern_attr2 => ..., ...},
        '1' => {:pattern_attr1 => ..., pattern_attr2 => ..., ...},
        '2' => {:pattern_attr1 => ..., pattern_attr2 => ..., ...},
        ...
       ]
    )