यह सब आपकी आवश्यकताओं पर निर्भर करता है। मैं यहां 2 उदाहरण प्रदान करूंगा। उनमें से दोनों केवल एक कस्टम पुस्तकालय हैं, lib
निर्देशिका के तहत स्थित हैं।
पहले उदाहरण - "कस्टम स्ट्रिंग प्रसंस्करण"
# lib/filters.rb
module Filters
# Converts value to canonical view
def self.phone(value)
# remove all non-digits
clean_value = value.gsub(/\D/, '')
country_codes = configus.phone.country_codes
area_code = configus.phone.defaults.area_code
case clean_value.length
when 7
"#{area_code}#{clean_value}"
when 11
# remove country code only if phone starts with the allowed country code
if country_codes.include?(clean_value[0].to_i)
clean_value[1..-1]
else
clean_value
end
else clean_value
end
end
# usage
# app/api/phones_controller.rb
class Api::PhonesController < Api::ApplicationController
def exists
if params[:q]
clean_value = Filters.phone(params[:q])
...
end
end
end
दूसरा उदाहरण - फ्लैश संदेशों के लिए सहायक
# lib/flash_helper.rb
module FlashHelper
def flash_translate(key, options = {})
scope = [:flash, :controllers]
scope += params[:controller].split('/')
scope << params[:action]
t(key, {:scope => scope}.merge(options))
end
end
# app/application_controller.rb
class ApplicationController < ActionController::Base
include FlashHelper
end
# usage
# app/your_controller.rb
class YourController < ApplicationController
def create
@object = Object.new(params[:object])
if @object.save
flash[:success] = flash_translate(:success)
...
end
end
end
नोट: मत भूलना lib
dir autoload पथ में जोड़ने के लिए । config/application.rb
में इस लाइन को जोड़ें/संशोधित करें config.autoload_paths += %W(#{config.root}/lib)
। तो मेरे लिए जवाब lib
निर्देशिका है।
समस्या यह है कि यदि कई सहायक तरीके हैं, तो 'ApplicationController' अनावश्यक हो सकता है।सेमिन पेरेपेलित्सा के जवाब में सुझाए गए अनुसार, मैं श्रेणी द्वारा सहायक फ़ाइलों में विधियों को तोड़ना पसंद करता हूं, और 'एप्लिकेशन कंट्रोलर' में फ़ाइलों को भी शामिल करता हूं। –