2

Rails (3.2.8) でオンライン調査ツールを作成しました。回答と応答は個別のオブジェクト (実際には 15 以上の異なるモデル) に保存されます。私はユーザー管理システムとして devise を使用しています。

すべてのインタビューが終了した後、管理者は、各ユーザーのインタビューの内容を検証しながら、ユーザーの回答を変更できます。管理者が応答を検証または変更するたびに、「admin_modified」という属性を true に設定したいと思います。

MVC では、モデル中にユーザー属性にアクセスするべきではないことはわかっていますが、15 の save/create/update_attributes コマンドがある各場所を変更せずに、ログインしているユーザーが管理者である場合にのみ、この属性を true に設定するにはどうすればよいですか?異なるモデル?

これを行う簡単で正しい方法はありますか?

ありがとう!

4

1 に答える 1

1

オブジェクトが変更されたかどうかを示す単純なブール値ではなく、どの管理者がオブジェクトを変更/検証したかを保存しないのはなぜですか?

これを実装する方法は次のとおりです。

User で、オブジェクトと新しい属性を受け取るメソッドmodify_form_objectまたはメソッドを作成します。modify_form_object_as_admin次のように呼び出します。

@user.modify_form_object(form_object, new_attributes)

そして、オブジェクトの を設定しadmin_id、オブジェクトを属性で更新します。


または、ActiveRecord の save メソッドをオーバーライドしcurrent_user、管理者かどうかを確認し、フィールドが存在する場合はそのフィールドを割り当てることもできます。

于 2013-01-08T15:30:19.690 に答える