2016-04-06 1 views
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

Awesome! Именно то, что я искал. большое спасибо! –