1

所以这里是未格式化的列表(这个,损益表,有像这样的行标题,所以是的,自动化是这里的方法)。

[“收入”、“其他收入,总计”、“总收入”、“收入成本,总计”...]

这是我通过简单的小消毒程序运行每个数组实体(字符串)后的列表,CleanZeeString.new.go(str).

[“收入”,“其他收入总额”,“总额收入”,“成本_收入总额”...]

所以,我想访问 Rails 方法,这将允许我至少部分自动化数据库列创建过程和迁移,因为这个列表有超过 50 个行标题,还有更多列表,我根本不相信手工做事了。

4

1 回答 1

0

以后(个人进步):

  • 我开始相信,这个问题的解决方案将涉及在迁移方面走出轨道“盒子”。是的,为了解决这个问题,我认为我们可能必须创造性地考虑迁移......

  • 我知道手动或借助某种第三方脚本解决方案的帮助是多么容易,但我只是拒绝。如果我愿意的话,我应该能够在昨晚喝几杯酒后自动做到这一点。给定数组,并且每一列都是相同类型的事实(rails 中的“十进制”),这应该以一种自动的、类似 rails 的方式来实现。

  • 迁移文件只是普通的 ruby​​ 文件。根据这一事实制定解决方案。是时候看中了。字符串#to_sym

知道了 - -

class CreateIncomeStatements < ActiveRecord::Migration
  def change
    f = File.open(File.join(Rails.root, 'lib', 'assets', 'is_list.json')) 
    is_ary = JSON.parse(f.read)
    create_table :income_statements do |t|
      is_ary.each do |k|
      eval("t.decimal k.to_sym")
      end
      t.timestamps
    end
  end
end

我用了这个eval()方法,感觉老师的鬼魂拍在我手腕上,但是,它奏效了。关键的“啊哈哈”是重新考虑迁移文件只是 ruby​​ 文件的事实,因此,我可以做任何我想做的事情。

于 2012-10-27T22:47:30.880 回答