#ruby-on-rails #ruby-on-rails-3
#ruby-on-rails #ruby-on-rails-3
Вопрос:
Хорошо, итак, я начал привыкать к rails 3 за последние несколько дней, и у меня есть проект в разработке, чтобы протестировать его. Возможно ли сделать следующее или что бы вы предложили, это лучший способ разрешить только авторам сообщений редактировать свои сообщения.
<% if post.author_id == current_user.id %>
<td><%= link_to 'Edit', edit_post_path(post) %></td>
<td><%= link_to 'Destroy', post, :confirm => 'Are you sure?', :method => :delete %></td>
<% end %>
Комментарии:
1. Вы должны проверить драгоценный камень CanCan — он очень хорошо работает для определения разрешений для подобных ситуаций. Вы определяете возможности пользователя и затем можете использовать такие инструкции, как
if can? :update, post
Ответ №1:
Рекомендация: Не сравнивайте id
объекты s — compare.
<% if post.author == current_user %>
Необязательно: рассмотрите возможность использования плагина (только при необходимости), подобного cancan
чтобы сделать его еще более наглядным.
<% if can? :edit, post %>
Комментарии:
1. Я пытался использовать ваш лучший пример, но при обновлении я получил эту ошибку:
undefined method
author»2. Я полагаю, что он предполагает связь «многие ко многим» с:has_many и т.д.
3. Ваша модель Post должна содержать
belongs_to :author, :class_name => "User"
ассоциацию, чтобы это работало.