我对rails很新颖,所以这可能是一个愚蠢的问题,但我花了几个小时来调试这个看似简单的错误,并且无处可去。在我的数据库中,我希望每行存储一个数组数组(在一个名为contribution的变量中)。我看,最好的办法做到这一点是通过添加以下代码:如何使用导轨在数据库中存储数字数组
class Goal < ActiveRecord::Base
#...
serialize :contributions, Array
#...
end
属性也是goal.rb
ActiveRecord::Schema.define(version: 20150711171452) do
create_table "goals", force: :cascade do |t|
#...
t.decimal "contributions"
#...
end
end
我通过这种迁移添加它:
class AddContributorsToGoals < ActiveRecord::Migration
def change
add_column :goals, :contributors, :string
add_column :goals, :contributions, :decimal
end
end
唯一的问题是,每当我尝试访问这个属性时,我总是会得到错误,指出它是BigDecimal类型。 Rails认为这是一个单一的数字,但我希望它是一个数字列表。任何想法,我可能做错了什么?一个问题,我得到的
一个例子是,当该执行:
@goal.contributions << @goal.lastUpdateAmount
但我得到这个错误
undefined method `<<' for #<BigDecimal:7f95e082ab18,'-0.0',9(9)>
我遵循相同步骤,一个字符串数组,并且被正确串行化。我只是不知道这个是怎么回事。
您是否尝试过使用文本而不是小数? –
检查此链接:[存储阵列中的DB _滑轨] [1] [1]:http://stackoverflow.com/questions/21312278/storing-arrays-in-database-json-vs-序列化数组 –