是否可以通过两个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