誰でもフォームを送信できないようにするにはどうすればよいですか? 現時点では、どのユーザーも他のユーザーのプロファイルのフォームを更新できますが、自分のプロファイルにしか触れられないはずです。
現在のユーザーのプロファイルにない場合はフォームを非表示にするか、コントローラー内でより安全なことを行う必要がありますか?
たとえば、新しい本を作成するためのフォームがあります。実際には、フォームが表示されるのは、ログインしているユーザーのプロフィール ページだけです。フォームは他のユーザーのプロフィール ページでは非表示にする必要があります。
形:
<%= 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 %>
編集:
CanCan を使い始めましたが、他のユーザーのプロファイルでブックを作成するためのアクセスを制限できません。
私の新しい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