‘questions.yml’从表中有一些recode转储.
---questions_001: Title: ttt1 content: ccc1questions_002: Title: ttt2 content: ccc2
我想从yml文件加载数据,将它们插入数据库.但我不能使用rake db:fixtures:load,因为它会将内容视为’erb’模板,这不是我想要的
所以我想编写另一个rake任务,手动加载数据.
我可以通过以下方式阅读记录:
file.open("#{RAILS_ROOT}/db/fixtures/#{table_name}.yml",'r') do |file| YAML::load(file).each do |record| # how to insert the record?? endend
但我不知道如何插入它们.
编辑:
我试过了:
Class.new(ActiveRecord::Base).create(record)
和
class Dummy < ActiveRecord::Base {}Dummy.create(rcord)
但没有插入数据库
解决方法 将日期从yml文件加载到记录后尝试此 *** 作:class Question < ActiveRecord::Base # Question model just to import the yml fileendrecords.each { |record| Question.create(record) }
您只需创建一个仅用于导入的模型.您无需创建app / models / question.rb.只需在负责导入的脚本中编写上面的代码即可.
更新:
您可以使用以下功能:
def create_class(class_name,superclass,&block) klass = Class.new superclass,&block Object.const_set class_name,klassend
source
file.open("#{RAILS_ROOT}/db/fixtures/#{table_name}.yml",'r') do |file| YAML::load(file).each do |record| model_name = table_name.singularize.camelize create_class(model_name,ActiveRecod::Base) do set_table_name table_name.to_sym end Kernel.const_get(model_name).create(record) endend
要直接使用连接,您可以使用以下内容:
ActiveRecord::Base.connection.execute("YOUR sql CODE")总结
以上是内存溢出为你收集整理的ruby-on-rails – 如何将.yml文件中的数据加载到数据库?全部内容,希望文章能够帮你解决ruby-on-rails – 如何将.yml文件中的数据加载到数据库?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)