我正尝试在此操作中使用自定义数据进行搜索,
def number_price(user_id,to)
user = User.find(user_id)
prices = Price.where(user_id: user_id)
price.each do |price|
if to =~ /^(price.prefix)/
return price."price_#{user_currency.downcase}"
else
return DefaultPrices."price_#{user_currency.downcase}"
end
end
但我在这条线上遇到了这个请求的错误;
return price."price_#{user_currency.downcase}"
任何想法我如何能够改善这一点并让它发挥作用..我感觉它有些愚蠢.. 谢谢
答案 0 :(得分:1)
我不确定你的模型是怎样的
但我想你正在尝试实现动态函数调用,可以通过
完成return price.send("price_#{user_currency.downcase}")
或者
return eval "price.price_#{user_currency.downcase}"
答案 1 :(得分:1)
使用public_send代替send,因为public_send
仅在类实例上调用公共方法:
class Foo
private
def bar
puts "Hi!"
end
end
=> nil
=> f = Foo.new
=> #<Foo:0x007f83e3813af8>
=> f.bar
=> #NoMethodError: private method `bar' called for #<Foo:0x007f83e3813af8>
=> f.send(:bar)
Hi!
=> nil
class Baz
def bor
puts "Ho!"
end
end
=> nil
=> s = Baz.new
=> #<Baz:0x007f83e2429da8>
=> s.bor
Ho!
=> nil
=> s.public_send(:bor)
Ho!
=> nil