ruby-on-rails – 在RoR中随机选择不同的数据库

ruby-on-rails – 在RoR中随机选择不同的数据库,第1张

概述我需要从db中选择随机记录.在我用于开发的Sqlite3中,有一个名为Random()的函数.但是,在 Postgresql中它被称为Rand().我不记得关于 MySql,但可能是因为它在那里被称为. 所以如果我有一个代码(对于Sqlite3) data = Items.where(pubshied: is_pubshied).order("RANDOM()").limit(count) 如何确 我需要从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  endend

然后你可以做

class Item  include RandomizeendItem.where(...).random.limit(...)
总结

以上是内存溢出为你收集整理的ruby-on-rails – 在RoR中随机选择不同的数据库全部内容,希望文章能够帮你解决ruby-on-rails – 在RoR中随机选择不同的数据库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1275182.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存