【问题标题】:Randomly sample from ActiveRecord collection object?从 ActiveRecord 集合对象中随机采样?
【发布时间】:2020-09-13 14:59:54
【问题描述】:

假设我们有一些类

@physician.availabilities.class
=> Availability::ActiveRecord_Associations_CollectionProxy

@physician.availabilities.length
=> 72

我们如何从这个对象中随机抽取记录?

例如这看起来很有希望

@physician.availabilities.sample(5)

除非

@physician.availabilities.sample(5).class
=> Array

而我想重新训练一个 ActiveRecord 对象(所以我可以.save 随机样本而不是其他样本)

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-6


    【解决方案1】:

    您可以在两个查询中执行此操作。

    ids = @physician.availabilities.sample(5).pluck(:id)
    @physician.availabilities.where(id: ids)
    

    这也可以使用 Postgres 和 RANDOM

    @physician.availabilities.order('RANDOM()').limit(5)
    

    ...或者如果您使用RAND 进入 MySQL

    @physician.availabilities.order('RAND()').limit(5)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-06
      • 2012-08-09
      • 2019-10-02
      • 1970-01-01
      • 2019-09-19
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多