Я только начинаю с Ruby и Rails, пробуя Devise with Rails 3. У меня есть цикл вокруг списка сообщений, каждый из которых связан с пользователь. Я только хочу отображать элементы управления редактирования для тех сообщений, которые связаны с текущим пользователем.Тестирование против «current_user» с помощью Devise in Rails 3
<% @posts.each do |post| %>
<%= link_to "show" %>
<% if current_user = post.user %>
<%= link_to "edit" %>
<% end %>
<% end %>
(выше упрощена, и из памяти, поэтому я уверен, что синтаксис не совсем верно - но вы получите суть.)
Если ни один пользователь не вошел в систему, посты показать, как и предполагалось, - есть ссылка Show
, но нет ссылки Edit
. Однако, если я вообще вошел в систему, отображаются все ссылки Edit
, даже сообщения fir, созданные другим пользователем.
Я проверял в консоли, что User.find(1) != User.find(2)
, но по какой-то причине current_user = post.user
оценивает истина независимо от того, кто в настоящее время вошли в систему. Является ли это делать с current_user будучи помощником, в отличие от «реальной» user
объекта? Как я могу использовать current_user
, чтобы получить доступ к текущему пользователю ACTUAL для сравнения?
Спасибо,
Dan
Я, наверное, надо было прочитать мою книгу Руби больше, прежде чем пропустить на Rails. Не уверен, почему я инстинктивно не использовал '==', я разработчик C# днем ... Спасибо! –