@l2p

Как соединить 3 модели Ruby on Rails?

user.rb:has_many :comments
post.rb:has_many :comments
comment.rb:
belongs_to :post
belongs_to :user


Обычные комментарии.
Как мне сделать добавление?
Без пользователей добавлял так: @comment = @post.comments.create(comment_params)

В таблице comments user и post:references прописаны. Осталось только строчку написать. Помогите, пожалуйста.

И кстати, можно ли belongs_to: :post, :user писать?
  • Вопрос задан
  • 3146 просмотров
Решения вопроса 1
FanKiLL
@FanKiLL
create создаёт обьект из переданных параметров и сразу сохраняет его, так что добавление потом
@comment.user = current_user
и не сохранить ничего не произойдёт.

Вместо create используйте build и сохраняйте руками
@comment.save

Примерно так
@comment = @post.comments.build(comment_params)
@comment.user = current_user
@comment.save
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@modernstyle
Code GOD
>И кстати, можно ли belongs_to: :post, :user писать
Нет

В своем случае используй has_many, through (документация)
Ответ написан
FanKiLL
@FanKiLL
@comment = @post.comments.create(comment_params)
@comment.user = current_user
Ответ написан
@Ant0ha
> И кстати, можно ли belongs_to: :post, :user писать

Для этого есть полиморфные связи
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы