私は Sinatra を使用していますが、これは Rails にも当てはまると思います (そうでない場合は、タグを削除するか、お知らせください。削除します)。
ActiveRecord::Base クラスがありUser
ます。たくさんの属性があり、誰かが特定のユーザーを更新できるようにするページを表示しています。問題は、更新機能を DRY 方式で実装するのに苦労していることです。つまりparams
、POST リクエストで を取得すると、次のことができます。
a_user.update_attributes params
paramsには他のがらくたも含まれているため(:splat
-それは何ですか?)、不明な属性エラーがスローされます。代わりに私がしなければならないことはこれです:
a_user.update_attributes {:attrA => params[:attrA],
:attrB => params[:attrB], ...etc }
(たくさんの属性があることに注意してください)
これは私がこれを行うべき方法ですか?私には、どういうわけか...それは正しくありません。たとえば、同様の方法で更新する必要がある別のモデルがある場合、すべての属性を手動で再度書き直す必要があります。
私が探しているのは次のようなものです:
a_user.filter_and_update_attributes params
ここで、filter_and_update_attributes は、不適切な/不明な属性のパラメーターを自動的にフィルター処理します。これは、役に立たないコードを大幅に書き直す必要がある任意のモデルでどこでも使用できます。
ありがとう