tengo tres modelos, todos para una relación has_many: through. Se ven así:usando has_many: through y compilación
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
esto carga bien, y las uniones están bien diseñadas para las consultas. Sin embargo, cada vez que hago algo así como
@company = Company.last
@user = @company.users.build(params[:user])
@user.save #=> true
@company.save #=> true
tanto el registro User
y los CompanyUser
registros se crean, pero el campo company_id
en el registro CompanyUser
se establece en 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)
que hace lo mismo cuando usted @company.users << @user
Estoy seguro de que estoy haciendo algo estúpido aquí, simplemente no sé qué.
por lo que si desea permitir a alguien que corrija una empresa y les permite añadir usuarios con casillas de verificación que tendría que tirar de la matriz de user_ids el hash params y crear un registro CompanyUser ¿para cada uno? –
complementó la respuesta anterior. –
¡Gracias! eso era lo que me estaba perdiendo. Ni siquiera pensé en hacer la forma así. me llamó estúpido. –