Если у вас есть способ получить доступ к объекту пользователя, вы должны иметь отношения к своим сообщениям, например:
class User < ActiveRecord::Base
has_many :posts
end
class Post < ActiveRecord::Base
belongs_to :user
end
Это позволяет вам получать и создавать сообщения для пользователей следующим образом:
User.find(1).posts #=> [<Post id:1>, <Post id:2>, <Post id:4>]
Enumerable # detec может зацикливаться на массиве и возвращать первый элемент, который оценивается как true в блоке, примерно так:
@post = User.find(1).posts.detect do |post|
post.id == 4
end
@post #=> <Post id:4>
Большинство приложений Rails имеют своего рода помощника для доступа к вошедшему в данный момент пользователю. Если нет, то я предлагаю вам поместить его в application_controller следующим образом:
def current_user
@current_user ||= User.find(whatever_you_do_to_get_the_logged_in_user)
end
Скопируйте поиск в действия по редактированию и обновлению постов, которыми владеет пользователь, например:
def edit
@post = current_user.posts.detect{|p| p.id == params[:id] }
end
и по вашему мнению:
<%= link_to('edit', edit_post_path(@post)) if current_user.posts.include?(@post) %>