0

ユーザーがメモを保存するフォルダーを設定できるアプリケーションがあります。以前は、それを作成した人の ID を格納する非表示のフォーム フィールドでした。

<%=f.hidden_field 'user_id', :value => current_user.id %>

ただし、このフォルダーへの読み取り専用アクセス権を持つ「キーホルダー」を追加する必要があります。ユーザーがフォルダーを追加した場合にのみ表示されるリンクのリストがあります。または、キー所有者がフォルダーを設定できます。

キーホルダーは通常のユーザー自身であるため、上記のコードは、アクセスしているアカウントのユーザーの ID ではなく、自分の ID を持つフォルダーのみをセットアップします。キーホルダーには、アクセスできるアカウントを持つ人のユーザー ID と一致する「access_id」があります。

フォームが正しいユーザー ID を取得するように設定するにはどうすればよいですか?

私が達成しようとしているのは次のとおりです(これは機能しませんが、私が何を意味するかをよりよく理解できるかもしれません):

<% if current_user.access.folder.nil? %>
    <li><%= link_to 'Create a Folder',
        new_folder_path(:user_id => current_user.access_id) %></li>
<% end %>

そして、このユーザーIDを受け入れるようにするには、フォルダフォームの部分で何を変更する必要がありますか? ありがとう!

4

2 に答える 2

0

cancanなどの認証ジェムを使用することをお勧めします。

于 2013-03-06T18:18:35.407 に答える
0

あなたがやろうとしていることを完全に理解しているかどうかはわかりませんが、ユーザーIDを隠しフィールドに保存するのではありません。<%= current_user.id %>あなたのやっているように、どのページでも使用してください。

次に、モデルのセットアップ方法に応じて、ヘルパー メソッドを作成して、ユーザーがいるページへのアクセスを確認します。ヘルパーがparams[:id]orparams[:user_id]をチェックして現在のページを取得すると仮定しています。

于 2013-03-07T14:58:17.797 に答える