Пытаясь написать базовое «блогоподобное» приложение в rails 3, я застрял в ассоциациях.Мне нужно, чтобы метод create сохранил post_id, а также user_id в таблице комментариев (которая мне нужна, чтобы получить все комментарии, написанные пользователем, чтобы отобразить его)
Приложение имеет пользователей (аутентификация -devise), сообщения (опубликованные пользователями - но я не уверен, что это имеет значение в моем случае) и комментарии (к сообщениям, опубликованным пользователями).
таблица комментариев имеет post_id, тело итакже user_id
Связи:
has_many :comments (In the Post model)
belongs_to :post (In the Comment model)
belongs_to :user (In the Comment model)
has_many :comments (In the User model)
маршруты:
resources :posts do
resources :comments
end
resources :users do
resources :comments
end
Форма поста комментария, отображаемая в постах, показывает представление: (posts / show.html.erb)
<% form_for [@post, Comment.new] do |f| %>
<%= f.label :body %>
<%= f.text_area :body %>
<%= f.submit %>
<% end %>
и, наконец, метод create в контроллере комментариев:
A.) Если я пишу это, post_id записывается в базу данных
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.create!(params[:comment])
redirect_to @post
end
B.) Если я пишу это, user_id пишется ...
def create
@user = current_user
@comment = @user.comments.create!(params[:comment])
redirect_to @post
end
Я пытался:
@comment = @post.comments.create!(params[:comment].merge(:user => current_user))
Но это не работает .. Как я могу написать методкоторые сохраняют user_id и post_id?Нужно ли было также вносить некоторые изменения в форму комментария (что-то вроде <% form_for [@post, @user, Comment.new] do | f |%>?)
Спасибо!