【发布时间】:2010-12-05 16:33:47
【问题描述】:
大家好,我正在尝试从 Ruby on Rails 的数据库中选择随机数据。不幸的是,sqlite 和 mysql 对“随机”函数使用不同的名称。 Mysql 使用 rand(),sqlite 使用 random()。到目前为止,我对在我的开发环境中使用 sqlite 感到非常高兴,我不想为此放弃它。
所以我有一个解决方案,但我对它不是很满意。首先,在 RoR 中是否有更简洁的抽象来获取随机函数?如果不是,这是获得“适配器”的最佳方式吗?
# FIXME: There has to be a better way...
adapter = Rails.configuration.database_configuration[Rails.configuration.environment]["adapter"]
if adapter == "sqlite3"
# sqllite calls it rand
random = "random"
else
# mysql calls it rand
random = "rand"
end
query.push("SELECT *, (" + random + "() * (0.1 * value)) AS weighted_random_value...")
【问题讨论】:
标签: mysql ruby-on-rails random sqlite