我有三個模型,全部用於has_many:through關係。他們看起來像這樣:使用has_many:通過並構建
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
我敢肯定,我在這裏做一些愚蠢的事情,我只是不知道是什麼。
所以,如果你想允許某人編輯公司,讓他們增加與用戶的複選框我需要的user_ids陣列拉出params哈希表,並創建一個CompanyUser紀錄爲每一個? – 2012-02-19 04:29:52
補充上面的答案。 – 2012-02-19 04:54:01
謝謝!那是我錯過的。我甚至沒有考慮過製作那樣的表格。稱我爲愚蠢。 – 2012-02-19 05:01:55