我是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_stock_quantity_equals
一样,我应该知道用户已拨打net_stock_quantity_equals
而不是net_stock_quantity
。
任何帮助都将不胜感激。
答案 0 :(得分:1)
它认为您正在正确接近问题 - 而不是使用别名方法,通过:equals, :gte, :lte
等作为参数发送到方法,即:
def net_stock_quantity(type = :all)
# do something with the type here
end
答案 1 :(得分:1)
您可以覆盖method_missing来执行此操作。
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
这里有一个教程,可以做类似的http://net.tutsplus.com/tutorials/ruby/ruby-for-newbies-missing-methods/
答案 2 :(得分:0)
def net_stock_quantity(alias_used = :net_stock_quantity)
method_called = caller[0]
#some code
end
method_called
将包含被调用别名的名称。