2012-04-23 5 views
3

私は、「ユーザ」が「メンバ」であるかどうかに基づいて条件を構築しようとしています。基本的には、current_user.idがメンバーのuser_idと一致するかどうかを確認する方法が必要です。私が今持っている非動作するコードは次のとおりです。RailsユーザIDが配列内にあるかどうかをチェックする

<% if current_user = @page.members %> 
    you can view this content. 
<% end %> 

私はの線に沿って何かを探しています:「すべてのメンバーの 『USER_ID』 current_user.idが中に存在する場合は」あなたはIDの配列を使用している場合、あなたはもちろん探すために少しテストを変更する必要があります

<% if @page.members.include? current_user %> 
    you can view this content. 
<% end %> 

:あなたの@page.members変数に配列が含ま、あなたはinclude?メソッドを使用することができると仮定すると、

+2

可能な複製[配列にオブジェクトが含まれているかどうかを確認する方法 - rails](http://stackoverflow.com/questions/3343861/how-to-check-if-my-array-includes-an-object-レール) – Thilo

+0

あなたはdeviseを使用していますか?もしそうなら、あなたはsigned_inを使うことができますか?ヘルパー。 current_userをdeviseにすると、自動的にユーザがログインしていることを意味します。deviseを使用していない場合、私はなぜそうしないのですか?すばらしいことに文書化されていて、コントローラなどを特定のものに対してオーバーライドするのは簡単です。それ以外の場合は、Michael Hartleのチュートリアルを参照して、認証を含む詳細なユーザーモデルを紹介してください。 – saneshark

+0

いいえ、この質問は異なります。 – BTHarris

答えて

12

何か、:include?はことを行う必要があります前に、

<% if @page.members.map(&:user_id).include? current_user.id %> 
    You can view this content 
<% end %> 
+1

最初にマップする必要はありません。 @ page.members.any?{| m | m.user_id == current_user.id}。 http://www.ruby-doc.org/core-1.9.3/Enumerable.html#method-i-any-3F –

4

現在のユーザーのIDが:

<% if @page.members.include? current_user.id %> 
    you can view this content. 
<% end %> 
1
@member_ids = @page.members.map{|m| m.id()} 

は、以下のように条件をチェック

あなたの質問のフィールド名に基づいて、このような
@memeber_ids.include? current_user.id() 
0

は述べています。

私は、CanCanという名前の宝石についてお答えしており、認可「ヘルパー」に簡単にアクセスできます。

CanCanなぜ実際に何をしているのですか?

  1. ほとんどの場合、それはゴーゴーの練習ではありません。
  2. ビューにビジネスロジックを配置しています(悪い習慣)。
  3. CanCanは、セキュリティとあらゆるベストプラクティスを念頭に置いて開発された可能性が高いです。
  4. 開発時間を短縮できます。

ごめんなさい。

関連する問題