0

誰でもフォームを送信できないようにするにはどうすればよいですか? 現時点では、どのユーザーも他のユーザーのプロファイルのフォームを更新できますが、自分のプロファイルにしか触れられないはずです。

現在のユーザーのプロファイルにない場合はフォームを非表示にするか、コントローラー内でより安全なことを行う必要がありますか?

たとえば、新しい本を作成するためのフォームがあります。実際には、フォームが表示されるのは、ログインしているユーザーのプロフィール ページだけです。フォームは他のユーザーのプロフィール ページでは非表示にする必要があります。

形:

<%= 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
4

2 に答える 2