Rails - Как мне установить значение идентификатора новой записи модели, в которой много/принадлежит отношениям?

StackOverflow https://stackoverflow.com/questions/4517033

Вопрос

Я пытаюсь создать запись, которая в 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top