6

私はブログプラットフォームであるRailsアプリを持っており、複数の寄稿者を許可しています。私のユーザーモデルには、書き込み権限を割り当てるための: writerboolean属性があります。ただし、:writerは、ユーザーモデルのattr_accessibleの下にリストされていません。

実行せずに、Webを介してこの属性を編集する方法が欲しかった

User.find_by_id(user_id).update_attribute(:writer, true/false)

コンソールを介して、しかし私はこれがユーザーモデルのattr_accessibleの下に:writerをリストせずに不可能であるかどうか疑問に思っています。adminユーザーのみがアクセスできるページがいくつかあり、それらのビュー内で:writer属性 を切り替える機能を配置できるようにしたいと思います。

それが本当に可能であるならば、それはどのように行われることができますか?よろしくお願いします!

編集:私が得たいくつかの答えに基づいて、私は私の質問でより具体的にすべきだったと思います。謝罪します。BeerlingtonとHiteshが指摘しているように、私はまだ:writer属性を個別に更新できることを理解しています。私が知りたかったのは、ビューを通してそのような関数をどのように実装できるかということでした。クリック可能なリンクを作成して:writerの状態を切り替えることは可能でしょうか?リンクにコントローラー関数を呼び出して、 :writerトグルに適切なuser_idを渡すことは可能でしょうか?

4

2 に答える 2

8

attr_accessible と attr_protected は、属性をmass-assignmentから保護するだけです。ただし、他の方法でそれらを割り当てることはできます。

一括割り当て (機能しません):

model.update_attributes(:admin => true)

非一括割り当て (オプション 1):

model.admin = boolean
model.save

非一括割り当て (オプション 2):

model.send(:attributes=, attributes, false)

非一括割り当て (オプション 3):

model.update_attribute(admin, boolean)

私は個人的にこれらの手動オプションのどちらも好きではないので、「sudo」メソッドを使用して一括割り当てを簡単にオーバーライドできるようにするsudo_attributesという gem を作成しました。

于 2011-05-16T11:57:06.607 に答える
1

これを使って

User.find_by_id(user_id).update_attribute(:writer, true) or 
User.find_by_id(user_id).update_attribute(:writer, false)
于 2011-05-16T11:55:55.240 に答える