J'ai créé un modèle Ruby Script/Generate Article modèle (simple enuff)
Voici le fichier de migration Create_articles.rb:
def self.up
create_table :articles do |t|
t.column :user_id, :integer
t.column :title, :string
t.column :synopsis, :text, :limit => 1000
t.column :body, :text, :limit => 20000
t.column :published, :boolean, :default => false
t.column :created_at, :datetime
t.column :updated_at, :datetime
t.column :published_at, :datetime
t.column :category_id, :integer
end
def self.down
drop_table :articles
end
end
Lorsque j'exécute le râteau: DB Migrer la commande Je reçois une erreur RAKE ANTORTED! "Créatures constantes non initialisées."
Est-ce que quelqu'un sait pourquoi cette erreur continue à se produire?
Assurez-vous que votre nom de fichier et votre nom de classe indiquent la même chose (à l'exception du nom de la classe correspond au chameau) .Le contenu de votre fichier de migration devrait ressembler à quelque chose comme ça, les simplifieds un peu aussi:
#20090106022023_create_articles.rb
class CreateArticles < ActiveRecord::Migration
def self.up
create_table :articles do |t|
t.belongs_to :user, :category
t.string :title
t.text :synopsis, :limit => 1000
t.text :body, :limit => 20000
t.boolean :published, :default => false
t.datetime :published_at
t.timestamps
end
end
def self.down
drop_table :articles
end
end
Si vous obtenez cette erreur et que ce n'est pas à cause du nom du fichier de migration, il existe une autre solution possible. Ouvrez la classe directement dans la migration comme celle-ci:
class SomeClass < ActiveRecord::Base; end
Il devrait maintenant être possible d'utiliser SomeClass
dans la migration.
Il est possible d'obtenir une erreur donnée si vos noms de classe ne correspondent pas aux inflexions (comme des acronymes) de config/initializers/inflections.rb
.
Par exemple, si vos inflexions comprennent:
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.acronym 'DOG'
end
ensuite, vous devrez peut-être vous assurer que la classe de votre migration est la suivante:
class CreateDOGHouses < ActiveRecord::Migration[5.0]
plutôt que:
class CreateDogHouses < ActiveRecord::Migration[5.0]
Pas super commun, mais si vous génèverez une migration ou un modèle ou quelque chose, puis y ajouter une partie aux inflexions après cela peut arriver. (L'exemple ici va causer NameError: uninitialized constant CreateDOGHouses
Si votre nom de classe est CreateDogHouses
, au moins avec Rails 5.)