Vous souhaitez appeler une méthode de scenario.rb
qui contient une méthode appelée complete_scenario? qui retourne un booléen dans le fichier de migration mais une erreur indique que complete_scenario?
est undefined_method.Rails: Appel d'une méthode à partir d'un modèle dans Rails Migration
class AddCompleteFlagToScenarios < ActiveRecord::Migration
def up
change_table :scenarios do |s|
s.boolean :complete, s.complete_scenario? :default => false, :null =>false
end
end
def down
remove_column :scenarios, :complete
end
end
Y at-il quelque chose que je fais mal ou oublier d'inclure? En fin de compte, je veux ajouter une nouvelle colonne à Scenario appelée complete qui prend le booléen de Scenario et le met dans la table mise à jour. Merci.
class Scenario < ActiveRecord::Base
validates :name,
presence: true,
uniqueness: { :case_sensitive => false },
length: { in: 4..60 }
has_many :nodes
has_many :showings, -> { visible }
has_many :courses, :through => :showings
attr_accessor :warnings
amoeba do
enable
include_association [:nodes]
end
...
def complete_scenario?
(self.unlabeled_choices.empty?) && (self.no_goal_nodes?) && (self.regular_leaf_nodes.empty?) && (self.unconnected_nodes.empty?)
end
Référencer noms de modèle dans les migrations n'est pas recommandé parce que les modèles sont susceptibles de changer et de retraite, alors que les migrations devraient rester statiques, et, quand ils changent, peut avoir des ramifications. – progfan