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”
?