à l'aide de has_many :through et construire

j'ai trois modèles, tous pour un has_many :la relation d'aide. Ils ressemblent à ceci:

class Company < ActiveRecord::Base

  has_many :company_users, dependent: :destroy
  has_many :users, through: :company_users

  accepts_nested_attributes_for :company_users, :users

end

class CompanyUser < ActiveRecord::Base
  self.table_name = :companies_users #this is because this was originally a habtm relationship
  belongs_to :company
  belongs_to :user
end

class User < ActiveRecord::Base
  # this is a devise model, if that matters

  has_many :company_users, dependent: :destroy
  has_many :companies, through: :company_users

  accepts_nested_attributes_for :company_users, :companies

end

cette charge très bien, et les jointures sont construits amende pour les requêtes. Cependant, chaque fois que je fais quelque chose comme

@company = Company.last
@user = @company.users.build(params[:user])

@user.save    #=> true
@company.save #=> true

à la fois la User enregistrement et la CompanyUser les documents créés, mais le company_id champ dans la CompanyUser enregistrement est réglé sur NULL

INSERT INTO `companies_users` (`company_id`, `created_at`,`updated_at`, `user_id`) 
VALUES (NULL, '2012-02-19 02:09:04', '2012-02-19 02:09:04', 18)

il fait la même chose quand vous @company.users << @user

Je suis sûr que je suis en train de faire quelque chose de stupide ici, je ne sais pas quoi.

OriginalL'auteur rm-rf | 2012-02-19