J'essaie d'ajouter une méthode à mon graines.rb em> afin que je n'ai pas besoin d'écrire un groupe de code verbeux. Toutefois, en fonction de la mise en place de la méthode Lorsque la méthode est avant appeler p>
RAKE ANTORTED!
Méthode privée 'Create_Deliverable' appelée # p>
blockQuote> Lorsque la méthode est après appel p> RAKE ANTORTED!
méthode non définie `create_deliverable 'pour # p>
blockQuote> n'est-il pas possible d'utiliser des méthodes dans graines.rb em>? Suis-je en quelque sorte appeler la méthode de manière incorrecte (j'ai essayé d'appeler avec et sans le Méthode strong> P> Create_Deliverable Code>, je reçois l'un des deux messages d'erreur lors de l'exécution
dB: Configuration code>.
moi code>)? P>
@wf_project.project_phases.each do |phase|
DeliverableType.find_by_lifecycle_phase(phase.lifecycle_phase_id).each do
|type|
self.create_deliverable("Low", type.id, phase.id)
self.create_deliverable("Medium", type.id, phase.id)
self.create_deliverable("High", type.id, phase.id)
end
end
3 Réponses :
Si vous allez utiliser auto. code>, utilisez-le sur la définition de la méthode, pas l'appel.
def self.create_deliverable(...)
...
end
...
create_deliverable("Low", type.id, phase.id)
...
+1 pour l'explication sur la manière dont .rb code> sans définition de classe est enveloppé dans une classe de rubis anonyme
me semble que vous avez placé votre Create_Deliverable Code> Méthode après
Indépendante code> Accédez à votre script. Mettez-le après
Public CODE>.
public
def create_deliverable(complexity, project_phase_id, deliverable_type_id)
Deliverable.create(:name => (0...8).map{65.+(rand(25)).chr}.join,
:size => 2 + rand(6) + rand(6),
:rate => 2 + rand(6) + rand(6),
:deliverable_type_id => deliverable_type_id,
:project_phase_id => project_phase_id,
:complexity => complexity)
end
private # to keep the rest of methods private
Les graines .rb ne définissent aucune classe, si public et privé n'a pas d'importance. Ce qui compte, c'est que vous définissez la méthode avant de l'exécuter.
Assurez-vous de définir la méthode avant de l'appeler:
def test_method puts "Hello!" end test_method
C'est une meilleure réponse, car les graines.rb ne définissent pas une classe, les méthodes publiques / privées n'ont pas d'importance.