我在Rails中有一个股票价格历史模型,我想将这些数据从yahoo finance api大量导入到我的模型中。
这就是我所拥有的:
columns = [:date,:open,:high,:low,:close,:volume,:adjusted_close,:asset_symbol]
values = ['2013-03-22',1,2,3,4,5,6,'YHOO']
AssetHistory.import columns,values
导致错误说明:undefined method each_with_index for '2013-03-22':String from .../activerecord-import/import.rb
请注意,我的values数组中的日期实际上是我的模型中的date类型。 (这是问题吗?)
我正在使用Activerecord-import 0.3.1和Rails 3.2。如果重要的话,我也在使用Postgresql。
带有注释的我的资产历史记录模型:
# Table name: asset_histories
#
# id :integer not null, primary key
# date :date
# open :float
# high :float
# low :float
# close :float
# volume :integer
# adjusted_close :float
# asset_symbol :string(255)
# asset_id :integer
#
class AssetHistory < ActiveRecord::Base
attr_accessible :adjusted_close, :close, :date, :high, :low, :open, :volume, :asset_id, :asset_symbol
has_and_belongs_to_many :assets
validates_uniqueness_of :asset_symbol, scope: [:date]
end
这个问题是什么原因?
答案 0 :(得分:1)
在将对象导入模型时,我们应该调用以下方法。
Model.import <array_of_cols>, <array_of_values>
例如:
Sample.import [:field1, :field2], [["value-a1", "value-a2"], ["value-b1", "value-b2"]]
以上示例将创建 Sample 模型的两条记录。
所以在你的情况下,请提供这样的。
AssetHistory.import columns, [values]
希望这会奏效。