J'essaie de générer un nouveau modèle et d'oublier la syntaxe pour référencer l'ID d'un autre modèle. Je le cherchais moi-même, mais je n'ai pas trouvé, parmi tous mes Ruby sur Rails liens de documentation, comment trouver la source définitive.
$ Rails g model Item name:string description:text
(et ici soit reference:product
ou references:product
). Mais la meilleure question est où ou comment puis-je facilement rechercher ce genre de sottise?
Note: J'ai appris à la dure que si je me trompe dans l'une de ces options et lancez ma migration alors Ruby sur Rails va totalement bousiller ma base de données ... et rake db:rollback
est impuissant face à de telles erreurs. Je suis sûr que je ne comprends tout simplement pas quelque chose, mais jusqu'à ce que je le fasse ... les informations "détaillées" renvoyées par Rails g model
me laissent tout de même gratter ...
:primary_key, :string, :text, :integer, :float, :decimal, :datetime, :timestamp,
:time, :date, :binary, :boolean, :references
Voir la section définitions de table .
Pour créer un modèle qui en référence un autre, utilisez le générateur de modèles Ruby sur Rails:
$ Rails g model wheel car:references
Cela produit app/models/wheel.rb :
class Wheel < ActiveRecord::Base
belongs_to :car
end
Et ajoute la migration suivante:
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
Lorsque vous exécuterez la migration, les éléments suivants se retrouveront dans votre 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 ce qui concerne la documentation, un point de départ pour les générateurs Rails est Ruby on Rails: Guide de la ligne de commande Rails qui vous indique API Documentation pour en savoir plus sur les types de champs disponibles.
$ Rails g model Item name:string description:text product:references
Moi aussi j'ai trouvé les guides difficiles à utiliser. Facile à comprendre, mais difficile à trouver ce que je cherche.
De plus, j'ai des projets temporaires sur lesquels je lance les commandes Rails generate
. Puis, une fois que je les fais travailler, je l'exécute sur mon vrai projet.
Référence pour le code ci-dessus: http://guides.rubyonrails.org/getting_started.html#associating-models
http://guides.rubyonrails.org devrait être un bon site si vous essayez de parcourir les éléments de base dans Ruby sur Rails.
Voici un lien pour associer des modèles pendant que vous les générez: http://guides.rubyonrails.org/getting_started.html#associating-models
N'oubliez pas de ne pas mettre votre texte en majuscule lorsque vous écrivez cette commande. Par exemple:
Écrivez:
Rails g model product title:string description:text image_url:string price:decimal
Ne pas écrire:
Rails g Model product title:string description:text image_url:string price:decimal
Au moins c'était un problème pour moi.
Dans ROR, il est très simple de créer un modèle qui référence les autres.
Rails g model Nom de l'article: description de la chaîne: produit textuel: références
Ce code ajoutera la colonne 'product_id' dans la table Item
J'ai eu le même problème, mais mon code était un peu différent.
def new @project = Project.new end
Et ma forme ressemblait à ceci:
<%= form_for @project do |f| %> and so on.... <% end %>
C'était totalement correct, alors je ne savais pas comment le comprendre.
Enfin, ajouter url: { projects: :create }
après <%= form-for @project
a fonctionné pour moi.