私はRailsにかなり慣れていないので、これはばかげた質問かもしれませんが、この一見単純なエラーのデバッグに何時間も費やし、どこにも行き着きませんでした。私のデータベースでは、各行に数値の配列を格納する必要があります(contributionsと呼ばれる変数に)。そのための最善の方法は、次のコードを追加することであると読みました。
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)>
文字列の配列を使用して同じ手順を実行しましたが、適切にシリアル化されました。これで何が起こっているのかわかりません。
データ型の10進数をテキストに変更してください
class AddContributorsToGoals < ActiveRecord::Migration
def change
add_column :goals, :contributions, :text
end
end
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加