如何在表之间复制(活动)记录?

ohh*_*hho 6 activerecord ruby-on-rails

在映射到具有未知数量的相同列的ActiveRecord的两个表中,例如:

  Table A      Table B
 ---------    ---------
  id           id
  name         name
  age          email
  email        is_member
Run Code Online (Sandbox Code Playgroud)

除了属性之外,我怎样才能(优雅地)将所有相同的属性从记录复制Table A到记录中?Table Bid

对于上面的示例的表,nameemail字段应该被复制.

Har*_*tty 7

试试这个:

获取TableA和TableB之间的列的交集

columns = (TableA.column_names & TableB.column_names) - ["id"]
Run Code Online (Sandbox Code Playgroud)

现在遍历TableA行并创建TableB行.

TableB.create( TableA.all(:select => columns.join(",") ).map(&:attributes) )
Run Code Online (Sandbox Code Playgroud)

编辑:复制一条记录:

table_a_record = TableA.first(:select => columns.join(","), :conditions => [...])
TableB.create( table_a_record.attributes)
Run Code Online (Sandbox Code Playgroud)