ruby-on-rails – 在RoR中随机选择不同的数据库
发布时间:2020-12-17 02:19:57 所属栏目:百科 来源:网络整理
导读:我需要从db中选择随机记录.在我用于开发的Sqlite3中,有一个名为Random()的函数.但是,在 Postgresql中它被称为Rand().我不记得关于 MySql,但可能是因为它在那里被称为. 所以如果我有一个代码(对于Sqlite3) data = Items.where(pubshied: is_pubshied).order("
我需要从db中选择随机记录.在我用于开发的Sqlite3中,有一个名为Random()的函数.但是,在
Postgresql中它被称为Rand().我不记得关于
MySql,但可能是因为它在那里被称为.
所以如果我有一个代码(对于Sqlite3) data = Items.where(pubshied: is_pubshied).order("RANDOM()").limit(count) 如何确保它可以与不同的数据库一起使用? 解决方法
Rails不支持开箱即用.我相信我通过模型扩展实现了这一点(我不再使用它,因为我强制使用Postgresql),但这样的东西可以工作:
module Randomize extend ActiveSupport::Concern included do scope :random,-> { order(rand_cmd) } end module ClassMethods def rand_cmd if connection.adapter_name =~ /mysql/i 'rand()' else 'random()' end end end end 然后你可以做 class Item include Randomize end Item.where(...).random.limit(...) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |