2010-05-25 11 views
10

मैं एक रेल एप्लिकेशन पर काम कर रहा हूं जिसमें उपयोगकर्ता प्रमाणीकरण है जो एक प्रशासक खाता प्रदान करता है। प्रशासकों के खाते में मैंने साइटवाइड सेटिंग्स के लिए एक पृष्ठ बनाया है।रेल आवेदन सेटिंग्स?

मैं सोच रहा था कि इन सेटिंग्स को बनाने के लिए मानक क्या है। उदाहरण के लिए कहें, मैं सेटिंग्स में से किसी एक को एप्लिकेशन नाम का नाम बदलना चाहता हूं, या हेडर का रंग बदलना चाहता हूं।

जो मैं ढूंढ रहा हूं वह मूल प्रक्रिया/विधि को समझाने के लिए है - जरूरी नहीं कि विशिष्ट कोड - हालांकि यह बहुत अच्छा होगा!

उत्तर

14

सामान्य आवेदन विन्यास कि एक डेटाबेस तालिका में संग्रहीत करने के लिए की जरूरत नहीं है के लिए, मैं के भीतर एक config.yml फ़ाइल बनाने के लिए की तरह कॉन्फ़िगर निर्देशिका। आपके उदाहरण के लिए, यह इस प्रकार दिखाई देंगे:

defaults: &defaults 
    app_title: My Awesome App 
    header_colour: #fff 

development: 
    <<: *defaults 

test: 
    <<: *defaults 
    app_title: My Awesome App (TEST ENV) 

production: 
    <<: *defaults 

यह विन्यास फाइल config में एक कस्टम प्रारंभकर्ता से लोड हो जाता है/initializers:

रेल 2.x:

APP_CONFIG = YAML.load_file("#{RAILS_ROOT}/config/config.yml")[RAILS_ENV] 

रेल 3.x:

APP_CONFIG = YAML.load_file("#{Rails.root}/config/config.yml")[Rails.env] 

आप फिर से पुनर्प्राप्त कर सकते हैं मूल्य का उपयोग कर:

title = APP_CONFIG['app_title'] 

पूर्ण विवरण के लिए this Railscast देखें।

+0

रेल में 3.x 'Rails.env' बजाय' RAILS_ENV' का इस्तेमाल किया जाना चाहिए। – Felix

6

बहुत अच्छी प्लगइन/मणि Settingslogic है।

# app/config/application.yml 
    defaults: &defaults 
    cool: 
     saweet: nested settings 
    neat_setting: 24 
    awesome_setting: <%= "Did you know 5 + 5 = #{5 + 5}?" %> 

    development: 
    <<: *defaults 
    neat_setting: 800 

    test: 
    <<: *defaults 

    production: 
    <<: *defaults 

आप एक मॉडल में, उदाहरण के लिए कहीं भी इन सेटिंग्स का उपयोग कर सकते हैं,:

class Post < ActiveRecord::Base 
    self.per_page = Settings.pagination.posts_per_page 
    end 
संबंधित मुद्दे