2つの関連付けを通じてオブジェクトを構築することは可能has_many
ですか?例えば:
# posts_controller.rb
def create
@post = current_account.posts.build(params[:post])
@post.author = current_user # I want to compact this line into the previous one
end
私はいくつかの調査を行い、これを見つけました:
@article = current_account.posts.build(params[:post], user_id: current_user.id)
しかし、それはうまくいきませんでした。コンソールではuser_id: nil
、新しいオブジェクトを作成するたびに取得し続けました。
私が実装できなかった別の潜在的な解決策:
@post = current_account.post_with_user(current_user).build(params[:post])
しかし、私が書いたすべての実装post_with_user
は失敗しました。
私の協会は次のとおりです。
class Discussion < ActiveRecord::Base
belongs_to :account
belongs_to :author, class_name: 'User', foreign_key: 'user_id', inverse_of: :discussions
end
class User < ActiveRecord::Base
belongs_to :account
has_many :discussions, inverse_of: :author
end
class Account < ActiveRecord::Base
has_many :users, inverse_of: :account
has_many :discussions
end