NoMethodError(未定义的方法`assign_attributes' for nil:NilClass)

时间:2016-05-06 10:40:35

标签: ruby-on-rails clone nested-attributes

我想实现克隆功能,用户可以将现有记录克隆到新记录中。 我想要克隆的模型是OpdRecord,我也将模型Medication嵌套在OpdRecord表单中,因此两者都是在提交表单后创建的。 当我使用以下代码克隆时

opd_record = OpdRecord.find_by(:id => params[:opd_record_id]) 
@opdrecord=opd_record.dup

嵌套的属性没有得到克隆。 当我保存

@opdrecord = OpdRecord.new(record_params)
@opdrecord.save

下面的reord params

def record_params
    params.require(:opdrecord).permit!
  end

我收到以下错误

NoMethodError (undefined method `assign_attributes' for nil:NilClass):

我如何设法保存嵌套属性

1 个答案:

答案 0 :(得分:0)

使用http://www.agner.org/optimize/instruction_tables.pdf gem OR deep_cloneable gem

使用Deep_Cloneable就像:

opd_record = OpdRecord.find_by(:id => params[:opd_record_id]) 
@opd_record = opd_record.deep_clone :include => [:medication ] # change it as per your model relations