如何防止任何人提交表單?現在,任何用戶都可以更新任何其他用戶個人資料上的表單,他們只能觸摸他們的個人資料。Rails - 任何人都可以添加一個項目。不好
我應該只隱藏表單,如果它不在當前用戶的配置文件中,或者在控制器內部做一些更安全的事情?
例如,我有一個表格來創建一本新書。實際上,表單應該顯示的唯一時間是登錄用戶的個人資料頁面。表單應該隱藏在其他人的個人資料頁面上。
表:
<%= form_for @book do |f| %>
<%= f.hidden_field :user_id, :value => @user.id %>
<%= f.hidden_field :status, :value => "f" %>
<%= f.text_field :title, :placeholder => "Title" %>
<%= f.text_field :author, :placeholder => "Author" %>
<%= f.submit 'Add Book', :value => "" %>
<% end %>
編輯:
我開始使用慘慘,但仍不能限制創建對其他用戶的個人資料書籍的訪問。
我的新Ability.rb:
class Ability
include CanCan::Ability
def initialize(user)
can :read, :all
can :create, Book
end
end
在應用控制器過濾器之前:
class ApplicationController < ActionController::Base
before_filter :current_user
def current_user
User.current = current_user
end
end
你CURRENT_USER方法會導致一個無限循環,會是:這兩種方法添加到您的
User
模式?假設你使用的是像AuthLogic這樣的認證,你必須使用不同的名稱,比如'set_current_user' – bdares@bdares我正在使用Devise,抱歉應該提到這一點。它可能有預定義的名字吧? –