Я создаю обычный форум для изучения / практики Rails. Как вы знаете, пользователи могут создавать темы и сообщения. Темы и Сообщения принадлежат Пользователю, который их создал, а Сообщения принадлежат Теме, в которой они были опубликованы. Примечание.
User Model
has_many :topics
has_many :posts
Topic Model
has_many :posts
belongs_to :user
Post Model
belongs_to :user
belongs_to :topic
Таким образом, когда пользователь создает новое сообщение, ему требуется user_id
и topic_id
.
Я знаю об ассоциации с:
@user.posts.create(:title => "My Topic.")
@topic.posts.create(:content => "My Post.")
Но эти примеры устанавливают только user_id
и topic_id
соответственно, но не оба.
Мой вопрос
Как я могу сделать что-то вроде этого:
@topic.posts.create(:content => "This is Dan's post", :user_id => @dan.id)
Без необходимости выставлять user_id
в модели Post через attr_accessible :user_id
?
Другими словами, я не хочу явно определять :user_id
.
Я пробовал что-то вроде:
dans_post = @user.posts.new(:content => "the content of my post")
@topic.posts.create(dans_post)
безрезультатно.