2016-04-06 9 views
1

ユーザー特権に基づいて複数の異なるレイアウトをレンダリングできる必要があります。私は1人の所有者と多くのメンバーを持つグループを持っています。私はまた、グループにいるかもしれないし、そうでないかもしれない多数のユーザーを持っています。グループがある場合、グループの所有者、グループのメンバー、または非メンバーのユーザーに異なるレイアウトをどうやってレンダリングしますか?複数の条件に基づいてパーシャルをレンダリングするとよいでしょうか?

私はこのような何かを考えていたこの

の認可の宝石を使用したくない:

<% if current_user == @group.owner %> 
    <% render partial_1 %> 
<% elsif current_user == @group.member && != @group.owner %> 
    <% render partial_2 %> 
<% else %> 
    <%render partial %> 
<% end %> 

はこの効果がありませんの?非効率的な?これには最高の/より良い方法がありますか?

答えて

1

基本的には問題ありません。ユーザーが所有者ではないことを確認した後、所有者ではないことを確認する必要はありません。また、ユーザーが多数のグループを持ち、グループに多数のメンバーを含めることができるどちらかは大丈夫です、どちらか一方ではなく、group.member@group.members.include?(current_user)は動作しますが、私は以下の反対を提案してきました。

<% if current_user == @group.owner %> 
    <% render partial_1 %> 
<% elsif current_user.groups.include?(@group) %> 
    <% render partial_2 %> 
<% else %> 
    <% render partial %> 
<% end %> 
+0

をすごい!私が探していたまさに。おかげでたくさん! –

関連する問題