2012-10-02 48 views
0

行,所以我想對所有的類型,如一個named_scope以下我在做這個define_method有什麼問題?

class Variety < ActiveRecord::Base 
    TYPES = ["holiday", "party", "other", yet_another] 

    Variety::TYPES.each do |role| 
    define_method 
     scope "#{role.to_sym}_applications", where(:type => role) 
    end 
    end 
end 

基本上我想要的命名範圍定義的元編程,這樣我可以做到這一點

Variety.holiday_applications 
Variety.party_applications 
Variety.other_applications 
Variety.yet_another_applications 

任何想法,我我在定義方法中做錯了

+1

你不需要define_method。 – oldergod

+0

我注意到...發佈了我的解決方案 – Trace

回答

2

嘗試將您的to_sym移動到整個方法名稱。

scope "#{role}_applications".to_sym, where(:type => role) 
0
Variety::TYPES.each do |role| 
    scope "#{role}_applications".to_sym, where(:type => role) 
end 
+0

解決了它,它只花了6分鐘:) – Trace

相關問題