rails - Как мне установить значение id новой записи модели, в которой есть много / принадлежит связи? - PullRequest
2 голосов
/ 23 декабря 2010

Я пытаюсь создать запись, которая находится в отношениях has_many и own_to

Пользователь имеет множество сообщений и сообщений, принадлежащих пользователю

@post = Post.new( params[:post], :user_id => current_user.id )
@post.save

но я получаю неправильное количество аргументов с ошибкой.

Могу ли я как-нибудь автоматически установить поле user_id модели Post? Я использую Devise, откуда поступил вызов current_user.

Ответы [ 3 ]

7 голосов
/ 23 декабря 2010

Еще пара способов:

@post = Post.new(params[:post])
@post.user_id = current_user.id
@post.save

Или:

@post = current_user.posts.build(params[:post])
@post.save
3 голосов
/ 23 декабря 2010

Объедините хэш params[:post] с {:user_id => current_user.id}:

@post = Post.new(params[:post].merge({:user_id => current_user.id}))
@post.save

См. Hash#merge

0 голосов
/ 23 декабря 2010

Если вы используете простые ассоциации has_many и own_to, в таблице пользователей не должно быть столбца post_id. В таблице сообщений должен быть только столбец user_id

С этим вы можете сделать:

@post = Post.new(params[:post])
@post.user_id = session[:user_id] #or an equivalent.
@post.save
@user.posts << @post
...