2

アクセサを宣言せずにActiveRecord::Storeを使用する方法はありますか?

ユースケースは、ユーザーが任意の変数を URL に追加し、そのキー/値をレコードと共に保存できるようにすることです。

たとえば、誰かが次のようにするかもしれません: http://example.com/response?order_number=12345&manager=Johnny&used_valet=true

したがって、、、およびレコードの列に保存する必要がありorder_numberます。しかし、すべてのユーザーは、保存したい変数のセットが異なります。managerused_valetvariables

今、私はこれを持っています:

class Response < ActiveRecord::Base
  store :variables
end

しかし、それを行うとunknown attributeエラーがスローされます。

$ Response.create(order_number: '12345')
ActiveRecord::UnknownAttributeError: unknown attribute: order_number
4

1 に答える 1

0

コンストラクターで渡すことはできません。各変数を個別に設定する必要があります。国の値が設定されている行を参照してください: http://api.rubyonrails.org/classes/ActiveRecord/Store.html

params オブジェクトをループして、クエリ文字列からすべてのパラメーターを取得し、各パラメーターに対して設定属性を設定できるはずです。

于 2013-05-03T15:54:13.717 に答える