комменты от юзеров в блоге


(МАКСИМ МАЙОРОВ) #1

Вопрос в догонку, попроще. При добавлениии коммента юзер может заполнить поле commenter. Как сделать так, что бы оно само заполнялось?
`class CommentsController < ApplicationController
def create
@post = Post.find(params[:post_id])
@commenter = current_user.email#Добавленная строка!!!
@comment = @post.comments.create(comment_params)
redirect_to post_path(@post)
end

private
def comment_params
params.require(:comment).permit(:commenter, :body)
end
end`
Добавляю строку @commenter = current_user.email, но этот код не работает.


(Kvokka) #2

ну тут не то чтобы все уж прям совсем ясненько-понятненько, но я бы поменял для начала это на

@comment = @post.comments.create(comment_params.merge(commenter: current_user.email))

ну и прочитал бы про markdown и писал свои посты с нормальной разметкой.


#3

Твои комментарии принадлежат посту и пользователю, в таком случае ты должен использовать связь: has_many :through, тогда тебе не прийдется вручную добавлять current_user.email, а потом, видимо, еще искать его через User.find_by(email: email).

С другой стороны, если тебе требуется просто вывод email как информативное поле в одном месте, ты просто добавляешь его в модель Comment, и подставляешь current_user.email в value формы. Но я даже не представляю в какой ситуации, это может быть хорошей идеей. Так что, по хорошему, ты должен использовать has_many :through.