我正在创建一个Rails应用程序,它是一个博客平台,有许多贡献作者。我的用户模型具有:writer 布尔属性,用于指示特定用户是否有权发布文章。为了防止批量分配,用户模型的 attr_accessible 下的:writer 属性为 NOT 。相反,我想创建一个类似于以下的函数,以允许切换writer-permissions:
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
我对这种方法有几个疑问:
提前感谢您的帮助!
答案 0 :(得分:2)
users_controller
。是的,你会的。由于此操作将更新单个用户,因此,您应该在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]
。