Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在rails 3中为非模型表创建ActiveRecord::Base对象_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 如何在rails 3中为非模型表创建ActiveRecord::Base对象

Ruby on rails 如何在rails 3中为非模型表创建ActiveRecord::Base对象,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个名为financial\u details的表,我想通过删除几列和添加几列来更改该表 因此,我从rails generate migration命令创建了一个临时表tmp\u financial\u details,并将所有financial\u details表数据复制到其中 现在,我想获取所有tmp\u financial\u details数据,并将其存储到financial\u details表中。像这样的, TmpFinancialDetail.all.each do |t|

我有一个名为
financial\u details
的表,我想通过删除几列和添加几列来更改该表

因此,我从
rails generate migration
命令创建了一个临时表
tmp\u financial\u details
,并将所有
financial\u details
表数据复制到其中

现在,我想获取所有
tmp\u financial\u details
数据,并将其存储到
financial\u details
表中。像这样的,

TmpFinancialDetail.all.each do |t|
   f = FinancialDetail.new()
   f.something =   t.someting * abc()
   f.save
end

由于我创建了没有任何模型的
tmp\u financial\u details
表,如何使用ActiveRecord实例对象处理它?

您可以在rails中处理数据库,而无需创建类。例如,以下内容将加载与数据对应的哈希数组,这在表之间移动数据时可能同样有用:

ActiveRecord::Base.connection.select_all("select * from tmp_financial_details")
编辑:

或者您可以创建一个临时模型并使用它

class TmpFinancialDetail < FinancialDetail
 set_table_name :tmp_financial_details
end

 TmpFinancialDetail.all.each do |t|
   f = FinancialDetail.new()
   f.something =   t.someting * abc()
   f.save
 end
class-tmpffinancialDetail

注意:确保继承
TmpFinancialDetail
只需在脚本中定义类,无需将其保存在单独的文件中。这只是一条线,它提供了所有的魔力

class TmpFinancialDetail < ActiveRecord::Base; end

TmpFinancialDetail.find_each do |t|
  FinancialDetail.create(:something => t.something * abc)
end
classtmpfinancialdetailt.something*abc)
结束

这一个看起来很棒,我尝试了
ActiveRecord::Base.connection.execute
,它返回了难以处理的
Mysql::Result
。但是
ActiveRecord::Base.connection.select\u all
返回可以轻松处理的哈希数组。感谢此操作不会返回
ActiveRecord
Objects@shiva,我知道,但我认为他实际上不需要使用ActiveRecord对象,尽管他在问题中问了如何使用。他只需要获取数据来解决问题。@arivarasan-你应该查看API文档,它有各种有用的信息,包括.execute和.select_all;-)之间的区别
@temp\u store=FinancialDetail。所有
都将从
tmp\u financial\u details
表和
f=FinancialDetail.new()中获取记录。。f、 保存
将记录存储到同一个表
tmp\u财务详细信息
您是否提供了
FinancialDetail.table\u name=“financial\u details”