gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 07:34:24 24 4
gpt4 key购买 nike

我需要从数据库中选择随机记录。在我用于开发的 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(...)

关于ruby-on-rails - 在 RoR 中随机选择不同的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13972429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com