Ruby on Rails genera il campo modello: tipo - quali sono le opzioni per il campo: tipo?


308

Sto cercando di generare un nuovo modello e dimenticare la sintassi per fare riferimento all'ID di un altro modello. Vorrei cercarlo da solo, ma non ho capito, tra tutti i miei collegamenti alla documentazione di Ruby on Rails, come trovare la fonte definitiva.

$ rails g model Item name:string description:text(e qui o reference:producto references:product). Ma la domanda migliore è dove o come posso cercare facilmente questo tipo di stupidità in futuro?

Nota: ho imparato nel modo più duro che se scrivo male una di queste opzioni ed eseguo la mia migrazione, Ruby on Rails rake db:rollbackrovinerà totalmente il mio database ... ed è impotente contro tali errori. Sono sicuro che non capisco qualcosa, ma fino a quando non lo faccio ... le informazioni "dettagliate" restituite rails g modelmi lasciano ancora graffiare ...


Che dire di: uniq e: opzioni del campo indice? Come in "rails g body title: text tracking_id: integer: uniq". Non sono riuscito a trovare documentazione per quelli. Ce ne sono altri?
Kangur,

11
rails generate model --help
Dennis,

1
L'utilizzo di un controllo versione ti fornirebbe un modo semplice per eseguire il rollback di tutti i file generati. E se il problema si trova nel database ... bene, puoi sempre fare db: schema: load
Hector Ordonez

1
bene è stato visto più di 140.000 volte e 243 persone ad oggi l'hanno trovato utile, quindi non è affatto una domanda sciocca :)
BKSpurgeon,

Risposte:


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

Vedi la sezione delle definizioni delle tabelle .


13
hmm ... nessuna menzione :referenceo :referencesnella tua risposta o una spiegazione di come passarla ai generatori nel link che hai fornito?!?
Meltemi,

53
Questo non risponde affatto alla domanda.
MikeEL,

1
Selezionato come risposta ma sappi che : i riferimenti sono anche un'opzione.
Meltemi,

14
Esiste della documentazione che definisce effettivamente questi tipi di colonna? Ad esempio, in cosa stringdifferisce text?
Concedi Birchmeier il

3
@Kangur i suffissi uniqe index(e tutti i tipi) sono documentati nell'uso di rails generate model. Esegui rails g modelper visualizzare i documenti di utilizzo.
Dennis,

188

Per creare un modello che fa riferimento a un altro, utilizzare il generatore di modelli Ruby on Rails:

$ rails g model wheel car:references

Questo produce app / models / wheel.rb :

class Wheel < ActiveRecord::Base
  belongs_to :car
end

E aggiunge la seguente migrazione:

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

Quando si esegue la migrazione, nel db / schema.rb verrà visualizzato quanto segue :

$ rake db:migrate

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

Per quanto riguarda la documentazione, un punto di partenza per i generatori di rotaie è Ruby on Rails: una guida alla riga di comando di The Rails che rimanda alla documentazione API per ulteriori informazioni sui tipi di campo disponibili.


4
leggermente obsoleto con il commento, ma questa è la risposta a questa domanda. +1
omninonsense,

7

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

Anch'io ho trovato le guide difficili da usare. Facile da capire, ma difficile da trovare quello che sto cercando.

Inoltre, ho progetti temporanei su cui eseguo i rails generatecomandi. Quindi, una volta che li faccio funzionare, lo eseguo sul mio vero progetto.

Riferimento per il codice sopra: http://guides.rubyonrails.org/getting_started.html#associated-models


3

Ricorda di non scrivere in maiuscolo il testo quando scrivi questo comando. Per esempio:

Scrivi:

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

Non scrivere:

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

Almeno è stato un problema per me.


Aspettare?!? Che cosa? Metto in maiuscolo i nomi dei miei modelli per tutto il tempo! Quali "problemi" stai vedendo?
Meltemi,

2
Non sto parlando del nome del tuo modello, ma del nome "Modello". Ho provato a creare un modello come questo: rails g Titolo del prodotto modello: stringa e ottenuto: Impossibile trovare il modello del generatore. così l'ho provato in questo modo: rotaie g modello titolo del prodotto: stringa e ha funzionato.
Victor Augusto,

1
Ah. Non avevo incontrato quel b4. Bel consiglio!
Meltemi,

2
(Non è il nome del modello che è il problema, è la parola modelche si riferisce al generatore. Va rails g model Product …bene.)
Asherah


0

ROR è molto semplice creare un modello che fa riferimento ad altri.

rotaie modello g Nome articolo: descrizione stringa: testo prodotto: riferimenti

Questo codice aggiungerà la colonna "product_id" nella tabella degli articoli


0

Esistono molti tipi di dati che puoi menzionare durante la creazione del modello, alcuni esempi sono:

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

sintassi:

field_type:data_type

0

Ho avuto lo stesso problema, ma il mio codice era leggermente diverso.

def new
 @project = Project.new
end

E la mia forma sembrava così:

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

Era del tutto corretto, quindi non sapevo come capirlo.

Infine, sto solo aggiungendo

url: { projects: :create }

dopo

<%= form-for @project ...%>

ha funzionato per me.


Questo può essere una buona risposta, ma non sono sicuro come si riferisce al PO che è circa tipi di campo ( :integer, :string, ecc ...).
Meltemi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.