動的属性を持つStyleモデルがあります。これは、1つのフィールドに属性キーを入力し、次のフィールドに値を入力することで保存できます。
典型的なparamsハッシュは次のようになります。
{"utf8"=>"✓", "style"=>{"collection_id"=>"48", "program_id"=>"989", "number"=>"454632", "name"=>"t67f", "category_id"=>"19", "field_KEY"=>"VALUE"}, "commit"=>"save", "id"=>"4521"}
これは、クリックすると意図したとおりに機能し、"field_KEY" => "VALUE"ペアはgetter( )メソッドfield_KEYとsetter(field_KEY=)メソッドを使用して新しい動的属性を作成します。
問題は次のとおりです。プロセスがキュウリでシミュレートされている場合、属性が設定される前に、ハッシュ内のすべてのキーに対してゲッターが呼び出されますfield_KEY。
通常の属性はnil新しいレコードに対して返されますが、のゲッターfield_KEYはまだ作成されていないため、結果として
`UndefinedMethodError: undefined method 'field_KEY'`.
さて、私の質問です。ゲッターの発信者を追跡しfield_KEYてキュウリをいじりまわすのか、それとも次のような偽のメソッドをシミュレートするのか。
def check_method(method_name)
if method_name =~ /^field_/
nil
else
... # let the Error be raised
end
より良いアイデアや解決策は大歓迎です
ありがとう