validar validaciones relaciones rails polimorficas modelos formulario entre asociaciones ruby-on-rails ruby-on-rails-3.1 activemodel

ruby on rails - validaciones - Cómo generar asociaciones entre modelos.



validaciones rails (1)

Me pregunto cómo hacer la asociación en Rails correcta. Primero creo un modelo de ciudad y una organización. Ahora quiero que una Organización tenga una Ciudad ... esto se hace agregando las has_many y has_one . Después de eso ejecuto rake db:migrate . Pero de alguna manera no crea un campo city o city_id en mi modelo de base de datos. ¿Tengo que hacer esto yo mismo? ¿No deberían los rieles ahora crear una restricción de clave foránea en la base de datos?

Para ver si ha funcionado, estoy usando rails c y escribo Organisation en que la respuesta es la siguiente:

=> Organisation(id: integer, name: string, description: string, url: string, created_at: datetime, updated_at: datetime)

Por favor, disculpe mi estúpida pregunta ... Soy un principiante en Rails y todo sigue siendo muy desconocido.

¡Gracias!

Ciudad:

class City < ActiveRecord::Base has_many :organisations end

Organización:

class Organisation < ActiveRecord::Base has_one :city end

Crear Ciudad:

class CreateCities < ActiveRecord::Migration def change create_table :cities do |t| t.string :name t.string :country t.timestamps end end end

Crear Organización:

class CreateOrganisations < ActiveRecord::Migration def change create_table :organisations do |t| t.string :name t.string :description t.string :url t.timestamps end end end


Hay un par de cosas mal con esto.

  1. belongs_to especificar un belongs_to en el otro lado de una has_many o has_one . El modelo que define una asociación por belongs_to es a donde pertenece la clave externa.

    Entonces, si una organización has_one :city , entonces una ciudad necesita belongs_to :organization a belongs_to :organization . Alternativamente, si una Ciudad has_one :organization , entonces la Organización debe belongs_to :city a belongs_to :city .

    En cuanto a su configuración, parece que desea la definición correspondiente al modelo de City .

  2. Las migraciones no se construyen a partir de las definiciones del modelo. En su lugar, se crean a partir de la carpeta db/migrations . Se crea una migración cuando ejecuta el comando rails g model (o rails g migration ). Para obtener una clave externa, debe indicarle al generador que la cree.

    rails generate model organization name:string description:string url:string city_id:integer

    O

    rails generate model city name:string description:string url:string organization_id:integer