我想创建一个模型的新实例,但是我想从不同的记录中引入一些参数,基本上将大多数参数复制到新实例中,但也将一些字段留空。
克隆它有效(感谢@weppos)
# class RecipesController
def new
@parent = Recipe.find(params[:parent_id])
@recipe = @parent.clone
end
虽然这确实有效,但它会破坏我所有的嵌套属性:
# class Recipe
accepts_nested_attributes_for :ingredients, :reject_if => lambda { |a| a.values.all?(&:blank?) }, :allow_destroy => true
就像它只保存新属性并抛弃所有旧属性一样,那些应该从另一个实例复制的属性。
答案 0 :(得分:1)
使用clone
方法。
@parent = Recipe.find(params[:parent_id])
@recipe = @parent.clone
如果克隆行为不适合您的需要,那么您可以从#clone
开始创建自定义方法,然后取消设置所有不必要的属性。