Rails试图将记录添加到变量

时间:2015-11-27 10:10:01

标签: ruby-on-rails ruby controller

我是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。感谢帮助!

1 个答案:

答案 0 :(得分:1)

在ActiveRecord中克隆对象将创建一个新实例,但会将其绑定到同一个db记录。 ActiveRecord保持状态指示它与db的关系(例如主键字段(id))

创建克隆的一种方法是将所需的属性复制到新实例:

a = @user.where(slug: "john-doe").first.attributes
a.delete('id')
User.create(a)