【发布时间】:2012-03-09 21:58:59
【问题描述】:
我有三个模型,都是为了一个 has_many :through 关系。它们看起来像这样:
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
这可以很好地加载,并且连接可以很好地用于查询。但是,每当我做类似的事情时
@company = Company.last
@user = @company.users.build(params[:user])
@user.save #=> true
@company.save #=> true
User 记录和CompanyUser 记录均已创建,但CompanyUser 记录中的company_id 字段设置为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)
当你@company.users << @user时它会做同样的事情
我确定我在这里做了一些愚蠢的事情,我只是不知道是什么。
【问题讨论】:
标签: ruby-on-rails ruby has-many-through