2012-07-26 35 views
0

我的模型中有多個命名範圍。他們有不同的名字,但參數相同。 現在,當我根據條件使用這些命名範圍時,我必須始終複製整個參數。無論如何要避免這種情況?Ruby編程 - 在使用命名範圍時避免代碼重複

對於前: 在我說一個產品型號:

named_scope :example1, lambda{ |parameter1, parameter2|{ 
//some code here// 
} 
} 

named_scope :example2, lambda{ |parameter1, parameter2|{ 
//some code here// 
} 
} 

named_scope :example3, lambda{ |parameter1, parameter2|{ 
//some code here// 
} 
} 

現在,我要根據病情

if(condition) 

Product.example1(param1, param2) 

elsif (condition) 

Product.example2(param1, param2) 

else 

Product.example3(param1, param2) 

使用這些有什麼辦法來稱呼它這在紅寶石:

variable = example1 //I can get the name of named_scope here 

Product.variable(param1, param2). //The relevant named_scope should be used. 

回答

1

您可以使用Object#send做發送產品消息(又稱調用方法)。

Product.send(variable,param1,param2) 
+0

非常感謝@bento ...工作就像一個魅力...需要15個代表點投票了這個答案:( – 2012-07-26 09:26:41