2010-02-24 7 views
14

Estoy desarrollando una aplicación, con un modelo de años y un modelo de cursos. Actualmente hay una relación has_and_belongs_to_many que los vincula con una tabla courses_years; sin embargo, me gustaría almacenar un campo adicional en la tabla courses_years.Agregue datos adicionales a la tabla de unión - Rails

El nuevo campo es un valor booleano llamado "obligatorio".

¿Hay alguna manera fácil o buena de hacerlo?

Respuesta

13

Cambie al uso de una asociación :has_many => :through, que está diseñada específicamente para cuando necesita un modelo de unión. Hay más detalles en el ActiveRecord Associations Rails Guide.

+0

Muchas gracias, ¿alguna idea para mi pregunta de seguimiento? http://stackoverflow.com/questions/2328273/add-fields-for-has- many-through-relationship-extra-data-rails – Jack

12

Desea un modelo de unión. Lo llamaría "CoursesYear" porque entonces no necesita cambiar el nombre de su tabla, pero también puede mover todos esos datos a otro modelo si lo desea. Sus modelos estarán configuración como esta:

class Courses < ActiveRecord::Base 
    has_many :courses_years 
    has_many :years, :through => :courses_years 
end 

class Years < ActiveRecord::Base 
    has_many :courses_years 
    has_many :courses, :through => :courses_years 
end 

class CoursesYears < ActiveRecord::Base 
    belongs_to :course 
    belongs_to :year 
end 

Siempre que necesite los atributos obligatorios (en este caso) que normalmente se accede a él a través del modelo unirse. Si desea encontrar todos los cursos que son obligatorios para un año determinado, la pregunta se responde here.

+0

Muchas gracias, fui por Options como el nombre de la tabla de unión. Sin embargo, tengo problemas para agregar el valor booleano a mi nuevo formulario de cursos. ¿Algunas ideas? http://stackoverflow.com/questions/2328273/add-fields-for-has- many-through-relationship-extra-data-rails – Jack

+3

Los nombres de las clases de los modelos deben estar en singular: Cursos -> Curso; Años -> Año; Cursos Anuarios -> CursoAño –

Cuestiones relacionadas