如何通过Sequel查询返回所有Dataset

问题描述 投票:0回答:1

Rails

scope
返回
all
(
ActiveRecord::Relation
) 而不是
nil
。 这样我就可以在
condition
nil
时使用方法链。

class MyClass < ApplicationRecord
  scope :my_filter, ->(condition) { where(condition: condition) if condition.present? }
end

MyClass.my_filter(condition).order(:date)

我想在Sequel中实现类似的功能,但是这段代码不能很好地工作,因为Sequel中的所有内容都返回一个数组。如何在 Sequel 中编写类似于 Rails 范围的功能?

class MyClass < Sequel::Model
  datase_module do
    def my_filter(condition)
      return all if condition.nil?
      where(condition: condition) 
    end
  end
end


    
ruby sequel
1个回答
0
投票

由于

where
返回
Dataset
我假设您也希望“all”返回相同的对象。

正如您所确定的,

all
将返回
Array
;但是,您可以使用适当命名的
Dataset
方法来检索
dataset

所以我们应该能够将您的实现更改为:

class MyClass < Sequel::Model
  datase_module do
    def my_filter(condition)
      return dataset if condition.nil?
      where(condition: condition) 
    end
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.