through rails many has_one has_many has_and_belongs_to_many has example create belongs and active ruby-on-rails ruby activerecord many-to-many

ruby-on-rails - many - rails has_one through



Rieles(ActiveRecord) muchos a muchos tabla (3)

Tengo dos modelos, usuarios y grupos. Cada grupo puede tener muchos usuarios y cada usuario puede estar en muchos grupos.

Actualmente tengo algo simple como:

Usuario:

has_many :groups

Grupo:

has_many :users

Así que tengo una tabla groups_users que solo está creando filas con group_id y user_id. Quiero agregar otra columna a esto, (que tengo), la pregunta es ¿cómo puedo acceder a ella desde un modelo sin usar una llamada SQL personalizada? En el modelo de grupo puedo ir a self.users y en user puedo ir self.groups

¿Hay alguna manera de cambiar la tercera columna de esta tabla de un modelo de usuario?

Perdón si esto es confuso, por favor asesórate sobre esto


users_groups otra columna a [ users_groups ] ... La pregunta es ¿cómo puedo acceder a ella desde un modelo sin usar una llamada SQL personalizada?

Parece que desea acceder a una columna de su tabla user_groups llamando a un método en su modelo de User o su modelo de Group .

Algunas sugerencias:

Yo user_groups la tabla " user_groups " para trabajar con las expectativas de pluralización de ActiveRecord, pero no estoy seguro de si eso es esencial.

Siguiendo el consejo de Dave, querrás configurar las cosas usando la técnica " has_many :through " ...

# Declare a Model based on the many-to-many linking table. class UserGroup < ActiveRecord::Base belongs_to :user belongs_to :group end class User < ActiveRecord::Base has_many :user_groups has_many :groups, :through => :user_groups end class Group < ActiveRecord::Base has_many :user_groups has_many :users, :through => :user_groups end

¿Hay alguna manera de cambiar la tercera columna de esta tabla de un modelo de usuario?

Esto no está claro, pero tenga en cuenta que cada User puede tener muchos UserGroups . Entonces, si quisieras cambiar esa tercera columna, tendrías que encontrar la particular que estás buscando.



En Rails 3 desea hacer una tabla de unión para muchas relaciones, usando los nombres en plural de las tablas que desea unir en orden alfabético. Entonces, en este caso, sería groups_users .

modelos

class GroupsUser < ActiveRecord::Base belongs_to :user belongs_to :group end class User < ActiveRecord::Base has_many :groups_users has_many :groups, :through => :groups_users end class Group < ActiveRecord::Base has_many :groups_users has_many :users, :through => :groups_users end