Ruby on rails 查找在rails模型中调用的别名方法

Ruby on rails 查找在rails模型中调用的别名方法,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.2,meta-search,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.2,Meta Search,我是rails开发的新手。我已经为一个方法创建了一些别名,我想知道调用哪个别名 我有这个密码 alias_method :net_stock_quantity_equals :net_stock_quantity alias_method :net_stock_quantity_gte :net_stock_quantity alias_method :net_stock_quantity_lte :net_stock_quantity alias_method :net_stock_quant

我是rails开发的新手。我已经为一个方法创建了一些别名,我想知道调用哪个别名

我有这个密码

alias_method :net_stock_quantity_equals :net_stock_quantity
alias_method :net_stock_quantity_gte :net_stock_quantity
alias_method :net_stock_quantity_lte :net_stock_quantity
alias_method :net_stock_quantity_gt :net_stock_quantity
alias_method :net_stock_quantity_lt :net_stock_quantity

def net_stock_quantity
  #some code here
end
我想知道用户调用了哪个别名。比如,如果用户调用
net\u stock\u quantity\u equals
,那么我应该知道用户调用了
net\u stock\u quantity\u equals
而不是
net\u stock\u quantity


任何帮助都将不胜感激。

它认为您处理问题的方法不正确-不要使用别名方法,而是通过
:equals、:gte、:lte等作为方法ie的参数发送:

def net_stock_quantity(type = :all)
  # do something with the type here
end 

它认为您处理问题的方法不正确-不要使用别名方法,而是通过
:equals、:gte、:lte
等作为方法的参数发送,即:

def net_stock_quantity(type = :all)
  # do something with the type here
end 

您可以重写缺少的方法来执行此操作

def method_missing(method_name, *args, &block)
  if method_name.to_s =~ /^net_stock_quantity_/ 
    net_stock_quantity method_name
  else
    super
  end
end

def net_stock_quantity(alias_used = :net_stock_quantity)
  #some code
end

这里有一个教程,做了一些类似的事情

,您可以覆盖缺少的方法

def method_missing(method_name, *args, &block)
  if method_name.to_s =~ /^net_stock_quantity_/ 
    net_stock_quantity method_name
  else
    super
  end
end

def net_stock_quantity(alias_used = :net_stock_quantity)
  #some code
end
这里有一个类似的教程

被调用的
方法\u将包含被调用别名的名称


被调用的
方法\u将包含被调用别名的名称。

你是该方法的别名者——听起来更像是你想要生成一个真正的方法,并根据调用的方法做一些事情。alias_method所做的一切都是alias a方法。您正在尝试做一些不同的事情。如果您正在尝试动态筛选记录,您可能会发现“Ransack”gem很有用。是的,我试图最小化模型中的方法。我想在调用别名的基础上使用
net\u stock\u quantity
中的if条件。这是更好的方法吗?如果是,请告诉我如何做到这一点,如果不是,请告诉我其他更好的方法。谢谢。@BaylorRae'我知道Ransack,但我已经在使用ernie/meta_search gem了。@Kashifumailliaqat那么你能在你的控制器中使用
search
方法吗(或者在你使用这些方法的地方)?你是这个方法的别名——听起来更像是你想要生成一个真正的方法,并根据调用的方法做一些事情。alias_method所做的一切都是alias a方法。您正在尝试做一些不同的事情。如果您正在尝试动态筛选记录,您可能会发现“Ransack”gem很有用。是的,我试图最小化模型中的方法。我想在调用别名的基础上使用
net\u stock\u quantity
中的if条件。这是更好的方法吗?如果是,请告诉我如何做到这一点,如果不是,请告诉我其他更好的方法。谢谢。@BaylorRae'我知道Ransack,但我已经在使用ernie/meta_搜索宝石。@Kashifumailliaqat那么你能在你的控制器中使用
search
方法吗(或者在你使用这些方法的地方)?Sachnir,如果你仔细阅读meta_搜索文档,你就会清楚我们不能发送这些参数(:equals,:gte,:lte)如果我们能告诉我怎么做?Sachnir,如果你仔细阅读meta_搜索文档,你就会清楚我们不能将这些参数(:equals,:gte,:lte)发送到自定义搜索方法,如果我们能告诉我怎么做?回答很好,我相信它也能工作。但也有一个简单的解决方案。我将在这个问题的新答案中写下这个解决方案,因为代码不能正确地显示在注释中。答案很好,我相信它也能工作。但也有一个简单的解决方案。我将在这个问题的新答案中写下这个解决方案,因为代码不能正确地显示在注释中。