2013-01-08 12 views
5

मैं रेल (मॉडल जी मॉडल) में मॉडल जनरेटर का विस्तार करने की कोशिश कर रहा हूं। असल में मेरे जनरेटर को मॉडल के समान ही करना चाहिए, लेकिन 2 अतिरिक्त फाइलों की प्रतिलिपि बनाना चाहिए। इतना ही आसान।रेल: जनरेटर का विस्तार कैसे करें?

मैंने रेलस्कास्ट # 218 (http://railscasts.com/episodes/218-making-generators-in-rails-3) की समीक्षा की जो बहुत जानकारीपूर्ण था लेकिन मुझे जनरेटर को विस्तारित करने के बारे में कोई जानकारी नहीं मिली।

रेल के स्रोत कोड की जांच करना, ऐसा लगता है कि मॉडल जेनरेटर lib/रेल/जेनरेटर/रेल/मॉडल/model_generator.rb में रेल :: जेनरेटर :: मॉडल जेनरेटर के रूप में परिभाषित है।

मैं अपने जनरेटर इस वर्ग का विस्तार करने की कोशिश की लेकिन यह परिणाम: मेरे प्रयास में इस फ़ाइल की आवश्यकता के लिए सफल नहीं थे

Error: uninitialized constant Rails::Generators::ModelGenerator. 

और।

इसलिए मैंने रोकने और यहां पूछने का फैसला किया। जनरेटर को विस्तारित करने का सही तरीका क्या है?

+0

क्या आपने इस गाइड को पढ़ा था? http://edgeguides.rubyonrails.org/generators.html – MikDiet

+0

@Mik_Die हाँ, लेकिन यह जनरेटर को विस्तारित करने के बारे में कुछ भी नहीं बताता है। यह जेनरेट विधि का जिक्र करता है लेकिन यह वही नहीं है जो मैं चाहता हूं। उदाहरण: मैं मॉडल जेनरेटर स्वीकार करने वाले सभी मानकों को स्वीकार करना चाहता हूं। – Fernando

उत्तर

1

हुक पर एक नज़र डालें और आह्वान करें।

class MyGenerator < Rails::Generators::Base 
    def create_my_file 
    # Do your generators stuff 
    create_file "config/initializers/my.rb", "# Add content here" 
    # Create model 
    invoke("model", ["model_name", "arg1", "arg2"]) 
    end 
end 

इस सहायता की आशा करें।

1
  1. अपने कस्टम जनरेटर जनरेट करें:

    rails generate generator my_model 
    
  2. ओपन lib/generators/my_model/my_model_generator.rb और के लिए इसे बदल:

    require 'rails/generators/active_record/model/model_generator' 
    
    class MyModelGenerator < ActiveRecord::Generators::ModelGenerator 
        source_root File.expand_path('../templates', __FILE__) 
    end 
    

इस रेल इंजन के लिए काम करता है। आवश्यक टेम्पलेट्स को जोड़ने के लिए मत भूलना।

संबंधित मुद्दे