7

sagen, dass ich diesen Rahmen haben:Können Sie in Rails einen Aliasnamen erstellen?

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

und ich möchte einen gleichwertigen Umfang

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

ist es eine Möglichkeit, einen Rahmen zu einem anderen Aliasnamens? Zum Beispiel so etwas wie

alias :with_zipcode, :has_zipcode 

P.S. Ich weiß, das ist ein erfundenes und unrealistisches Beispiel, nur neugierig, ob es möglich ist!

Danke!

Antwort

15

Ja, Sie können. Denken Sie daran, dass Bereiche Klassenmethoden sind, sodass Sie im Kontext der Klasse einen Alias ​​erstellen müssen:

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 
Verwandte Themen