Ruby on Rails genera model field: type - ¿cuáles son las opciones para field: type?


Estoy tratando de generar un nuevo modelo y olvidar la sintaxis para hacer referencia al ID de otro modelo. Lo buscaría yo mismo, pero no he descubierto, entre todos mis enlaces de documentación de Ruby on Rails, cómo encontrar la fuente definitiva.

$ rails g model Item name:string description:text (y aquí reference:product o references:product). Pero la mejor pregunta es dónde o cómo puedo buscar este tipo de tonterías fácilmente en el futuro?

Nota: He aprendido de la manera difícil que si escribo mal una de estas opciones y ejecute mi migración entonces Ruby on Rails arruinará totalmente mi base de datos... y rake db:rollback es impotente contra tales errores. Estoy seguro de que no estoy entendiendo algo, pero hasta que lo haga... la información" detallada " devuelta por rails g model todavía me deja rascándome...

Author: user2262149, 2010-12-08

6 answers

:primary_key, :string, :text, :integer, :float, :decimal, :datetime, :timestamp,
:time, :date, :binary, :boolean, :references

Consulte la sección definiciones de la tabla .

 450
Author: Paul Schreiber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-01 18:21:10

Para crear un modelo que haga referencia a otro, utilice el generador de modelos Ruby on Rails:

$ rails g model wheel car:references

Que produce app/models/wheel.rb :

class Wheel < ActiveRecord::Base
  belongs_to :car
end

Y añade la siguiente migración:

class CreateWheels < ActiveRecord::Migration
  def self.up
    create_table :wheels do |t|
      t.references :car

      t.timestamps
    end
  end

  def self.down
    drop_table :wheels
  end
end

Cuando ejecute la migración, lo siguiente terminará en su db/schema.rb :

$ rake db:migrate

create_table "wheels", :force => true do |t|
  t.integer  "car_id"
  t.datetime "created_at"
  t.datetime "updated_at"
end

En cuanto a la documentación, un punto de partida para los generadores de rails es Ruby on Rails: Una Guía para la Línea de comandos de Rails que apunta a API Documentación para más información sobre los tipos de campos disponibles.

 183
Author: Troy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-08 03:02:22

$ rails g model Item name:string description:text product:references

Yo también encontré las guías difíciles de usar. Fácil de entender, pero difícil de encontrar lo que estoy buscando.

Además, tengo proyectos temporales en los que corro los comandos rails generate. Luego, una vez que los tengo trabajando, lo ejecuté en mi proyecto real.

Referencia para el código anterior: http://guides.rubyonrails.org/getting_started.html#associating-models

 7
Author: B Seven,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-20 17:47:45

Recuerde no poner en mayúscula el texto cuando escriba este comando. Por ejemplo:

Escribe:

rails g model product title:string description:text image_url:string price:decimal

No escriba:

rails g Model product title:string description:text image_url:string price:decimal

Al menos era un problema para mí.

 3
Author: Victor Augusto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-31 17:08:36

Http://guides.rubyonrails.org debería ser un buen sitio si estás tratando de pasar por las cosas básicas de Ruby on Rails.

Aquí hay un enlace para asociar modelos mientras los genera: http://guides.rubyonrails.org/getting_started.html#associating-models

 3
Author: Raghu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-08 03:01:37

Tuve el mismo problema, pero mi código era un poco diferente.

def new @project = Project.new end

Y mi forma se veía así:

<%= form_for @project do |f| %> and so on.... <% end %>

Eso fue totalmente correcto, así que no sabía cómo averiguarlo.

Finalmente, solo agregar url: { projects: :create } después de <%= form-for @project funcionó para mí.

 0
Author: justinedps26,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-08 03:03:18