0

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

例如: 在我说的产品模型中:

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.
4

1 回答 1

1

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

Product.send(variable,param1,param2)
于 2012-07-26T07:46:45.757 回答