我是Rails的新手。我试图根据匹配从@users模型复制用户,然后将其作为@users模型中的新行重新添加。我这样做是一个快速的一次性情况,并在users_controller.rb
中进行我有以下伪代码 -
@users = users.includes(:products).order('orders.created_at DESC')
@new_user = @user.where(slug: "john-doe").first
if !@new_user.nil?
@new_user = @user.where(slug: "john-doe").first.clone
@user << @new_user
end
但是,当我执行以下操作时,在相关控制器的视图中 -
<%= @new_user.inspect %>
它显示但是当我做
时 <%= @users.inspect %>
它没有显示实际添加的@new_user。感谢帮助!
答案 0 :(得分:1)
在ActiveRecord中克隆对象将创建一个新实例,但会将其绑定到同一个db记录。 ActiveRecord保持状态指示它与db的关系(例如主键字段(id))
创建克隆的一种方法是将所需的属性复制到新实例:
a = @user.where(slug: "john-doe").first.attributes
a.delete('id')
User.create(a)