Ruby编程 - 在使用命名范围时避免代码重复

时间:2012-07-26 07:39:57

标签: ruby-on-rails ruby ruby-on-rails-2

我的模型中有多个命名范围。它们具有不同的名称但参数相同。 现在,当我根据条件使用这些命名范围时,我必须一直复制整个参数。无论如何要避免这种情况吗?

对于前者: 在我说的产品型号:

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 个答案:

答案 0 :(得分:1)

您可以使用Object#send向Product发送消息(也称为方法)。

Product.send(variable,param1,param2)