2010-12-10 13 views
7

Entiendo que de forma predeterminada se crea el campo id y también: PRIMARY KEY ( id ).¿Qué crea la restricción FOREIGN KEY en Ruby on Rails 3?

¿Qué tal la clave externa?

tengo Shops y Products mesas y las siguientes asociaciones:

Shop: has_many :products 
Product: belongs_to :shop 

En Product también tengo:

t.integer "shop_id" 

que está destinado a ser la clave externa, y también:

add_index("products", "shop_id") 

Sin embargo, si exporto la base de datos que veo en ly:

KEY `index_products_on_shop_id` (`shop_id`) 

¿Qué debo hacer para añadir

FOREIGN KEY (`shop_id`) REFERENCES Shop(`id`) 

?

Respuesta

16

Puede usar la gema foreigner para agregar claves externas a su aplicación. Para empezar a añadir lo siguiente a su Gemfile

gem "foreigner" 

Después de que usted puede agregar fácilmente las claves externas en su migración, así:

add_foreign_key :products, :shops 

Esto añadiría un extraño de product.shop_id a shop.id. Consulte la documentación para obtener más opciones, como claves con nombres diferentes o tablas de autorreferencia.