Para expresar que un grupo puede tener múltiples usuarios, y un usuario puede pertenecer a múltiples grupos , me puse las siguientes asociaciones:Rails: Por qué "has_muy ...,: a través => ..." resultados de asociación en "NameError: constante no inicializada ..."
class Group < ActiveRecord::Base
has_many :users_groups
has_many :users, :through => :users_groups
end
class User < ActiveRecord::Base
has_many :users_groups
has_many :groups, :through => :users_groups
end
class UsersGroups < ActiveRecord::Base
belongs_to :user
belongs_to :group
end
Sin embargo, cuando escribo:
Group.find(1).users
me sale:
NameError: uninitialized constant Group::UsersGroup
¿Qué estoy haciendo incorrecto ?
Gracias! Me parece extraño/incorrecto tener un modelo llamado 'UsersGroup'. No quiero que uno de ellos sea plural y el otro singular. Tal vez debería cambiar el nombre del modelo a algo así como UserGroupPair, de modo que el nombre de la tabla sea 'user_group_pairs'. Qué piensas ? –
Cuando tiene un modelo de unión, la práctica estándar es crear una palabra que describa la asociación. Por ejemplo, GroupMembership o algo así. Sin embargo, para comprobarlo, ¿está seguro de que necesita un modelo de unión? Puede salirse con una sola mesa si la unión no necesita lógica. – Skilldrick
¿Quiere decir el nombre del modelo 'GroupMembership' y el nombre de la tabla' group_membership', es decir, ambos en singular? No estoy seguro de entender su segundo punto con respecto a deshacerse de la mesa de unión. Podrías elaborar un poco ? –