0

私はブログ プラットフォームである Rails アプリケーションを作成しており、多くの寄稿者がいます。私のUserモデルには、特定のユーザーが記事を公開する権限を持っているかどうかを示す:writerブール属性があります。一括割り当てを防ぐために、:writer属性はUserモデルのattr_accessibleの下にリストされていません。代わりに、次のような関数を作成して、書き込み権限を切り替えられるようにすることを考えました。

def toggle_writer    
  if User.find(:id).writer?
    User.find(:id).update_attribute(:writer, false)
  else
    User.find(:id).update_attribute(:writer, true)
  end
  flash[:success] = "User permissions toggled."
  redirect_to admintools_users_path
end

ただし、このアプローチに関していくつか質問があります。

  1. ビューからこれを呼び出すにはどうすればよいですか? link_toまたはbutton_forを介して関数を呼び出す方法はありますか?
  2. そのような関数をどこに配置しますか?コントローラー、またはヘルパーで?
  3. config/routes.rbファイルのルートを編集する必要がありますか?

よろしくお願いします。

4

1 に答える 1

2
  1. はい、できます。
  2. に入れておいた方が良いですusers_controller
  3. はい、そうします。このアクションは 1 人のユーザーを更新するため、 で次の操作を行う必要がありますroutes.rb

     resources :users do
       member do #this means you are doing with a certain object
         get :toggle_writer, :as => :toggle_writer_for # this line will generate toggle_writer_for_user_path route
       end
     end
    

これで、このルートを次link_toのようlink_to("Toggle writer", toggle_writer_for_user_path(@user))に使用できます。どこ@userから取得できますかparams[:id]

于 2011-05-17T07:07:56.300 に答える