私のコントローラでは、一致する整数値を1つ抜き取り、別のテーブルにその値を持つレコードを作成する必要があります。アクションでは、それは次のようになります。私はfirst
変数が定義可能であるコンソールでテストしている.Createメソッドは、Rails 4の整数を認識できない場合にnil値を追加します。
if Participation.where(ranking: "1")
first = PointsAllocation.where(game_id: params[:game_id]).where(place: "1").pluck(:points)
Stack.create(game_id: params[:game_id], user_id: current_user.id, chips: first)
else
end
。
SELECT "points_allocations"."points" FROM "points_allocations" WHERE "points_allocations"."game_id" = 1 AND "points_allocations"."place" = 1 => [10]
は、[OK]を、ので、正しくPoints
のための整数値のように見えるもの摘採されています。私はPointsAllocation.where(game_id: "1").where(place: "1").pluck(:points)
を実行した場合、それが返されます。私はこの点の値を使用して、Stack
テーブルのChips
列に送信します。私はこれを実行すると、それはそうのように、first
が定義されていてもnil
レコードを追加します:
トラブルシューティングで<Stack id: 1, game_id: 1, user_id: 1, chips: nil>
は、私は多分ここに問題があると思ったこと、それは、整数のように見える(とChips
にもかかわらず、 、私は追加する必要がありますt.integer
属性です)、多分それは誤って文字列か何かから抜け出す。だから、これを整数にマップして、安全のためにmap(&:to_i)
を追加してみましょう。それが今で返すよう
私は、それは奇妙取得していること:
<Stack id: 9, game_id: 1, user_id: 1, chips: 0>
を私は整数に変換するときだから、それは0から10に変更し、テーブルに追加します。
どこが間違っていますか?
うんちょうどそれをキャッチし、:彼らは列の型と異なる入力すると
問題は、ARが正しくない値を変換しようとしていることです。別の方法:ドキュメントを読んだ後、 'pluck'は配列がただ一つの値であっても配列を返します。 '.first'を使用することで、整数に変換され、createメソッドで正常に使用できます。ありがとう! – darkginger