2011-03-16 10 views
13

¿Hay alguna forma de generar un modelo de Rails con una relación de muchos a muchos predefinida? Sé cómo agregarlo al registro activo después del hecho, pero sería bueno tenerlo definido en la migración de base de datos y el modelo de registro activo desde el primer momento.Generando un modelo con muchos a muchos en Ruby on Rails

Respuesta

3

Puede utilizar esta referencia de las Guías de rieles. Here is the link. También necesitará crear manualmente la tabla de unión para esos modelos que usan una migración.

por ejemplo

create_table :assemblies_parts, :force => true do |t| 
     t.integer :assembly_id 
     t.integer :part_id 
    end 
+0

Gracias por la respuesta, he leído esa guía. Como mencioné a otro respondedor, me preguntaba si el script de generar modelo podría manejarlo en un solo paso, y parece que no puede, así que está bien ... sin embargo, hubiera sido bueno. ; p – Kevin

+0

sí, no creo que se pueda hacer automáticamente. Si descubro un atajo, lo publicaré aquí :). – Shiv

16

Recuerde que usted no desea un ID para la tabla de unión, así que asegúrese de añadir: id => false | t |

create_table assemblies_parts, :id => false do |t| 
    t.integer :assembly_id 
    t.integer :part_id 
end 

Si utiliza los carriles

rails generate model Assemblies_parts assembly:references part:references 

tendrá dos índices, pero lo que quiere es

# Add table index 
add_index :assemblies_parts, [:assembly_id, :part_id], :unique => true 

ACTUALIZACIÓN

+1

http://jonathanhui.com/ruby-rails-3-model-many-many-association –