模型查询麻烦

时间:2013-12-28 11:07:45

标签: ruby-on-rails ruby

我正尝试在此操作中使用自定义数据进行搜索,

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}"

任何想法我如何能够改善这一点并让它发挥作用..我感觉它有些愚蠢.. 谢谢

2 个答案:

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