7

Dire che ho questo scopo:Puoi alias un ambito in Rails?

scope :with_zipcode, lambda { |zip| where(zipcode: zip) } 

e voglio una portata equivalente

scope :has_zipcode, lambda { |zip| where(zipcode: zip) } 

c'è un modo per alias un ambito ad un altro? Per esempio qualcosa come

alias :with_zipcode, :has_zipcode 

P.S. So che questo è un esempio inventato e irrealistico, solo curioso di sapere se è possibile!

Grazie!

risposta

15

Sì, è possibile. Basta ricordare che gli ambiti sono metodi di classe in modo che sia necessario fare alias nel contesto della classe:

class User < ActiveRecord::Base 
    scope :with_zipcode, lambda { |zip| where(zipcode: zip) } 
    class << self 
    alias_method :has_zipcode, :with_zipcode 
    end 

    # or with Ruby 1.9+ 
    singleton_class.send(:alias_method, :has_zipcode, :with_zipcode) 
end 
Problemi correlati