【发布时间】:2015-12-14 03:11:55
【问题描述】:
场景:
产品以用户指定的货币显示,而每个产品都有自己的原始货币(可以与用户指定的相同,可以是任何其他货币)
用户想要以用户指定的货币(假设为美元)搜索具有特定价格范围 (10 - 100) 的产品
我正在使用 postgres 和 Rails。每个产品都有原始货币的 price_amount 和货币。
问题 由于每种产品都可以使用任何货币,因此我需要将所有产品标准化为用户指定的货币,以便查看哪个产品在范围内。
我有每对受支持货币的汇率。但是查询会很复杂,不知道有没有更高效的方法?
currencies.map do |currency|
rate = ex_rate(user_specific_currency, currency)
query = [query , "products.price * #{rate} <= user_max AND products.price * #{rate} >= user_min AND products.currency = '#{currency}'"].join(" OR ")
end
Product.where(query)
【问题讨论】:
标签: ruby-on-rails postgresql ruby-on-rails-4