Rails - Как мне установить значение идентификатора новой записи модели, в которой много/принадлежит отношениям?
-
12-10-2019 - |
Вопрос
Я пытаюсь создать запись, которая в has_many и принадлежности
Пользовательские посты и сообщения пользователя принадлежат пользователю
@post = Post.new( params[:post], :user_id => current_user.id )
@post.save
Но я продолжаю получать неправильное количество ошибок аргументов.
Могу ли я как -то установить поле user_id модели Post? Я использую разработку, откуда приходит вызов Current_user.
Решение
Еще пара способов:
@post = Post.new(params[:post])
@post.user_id = current_user.id
@post.save
Или же:
@post = current_user.posts.build(params[:post])
@post.save
Другие советы
Объединить params[:post]
хэш с {:user_id => current_user.id}
:
@post = Post.new(params[:post].merge({:user_id => current_user.id}))
@post.save
Видеть Hash#merge
Если вы используете Simple has_many и принадлежит ассоциациям, в таблице пользователей не нужно будет столбец post_id. В таблице сообщений должен быть только столбец user_id
С этим вы можете сделать:
@post = Post.new(params[:post])
@post.user_id = session[:user_id] #or an equivalent.
@post.save
@user.posts << @post
Не связан с StackOverflow