鉴于我有一些数据集方法foo,bar并且baz
class User < Sequel::Model
dataset_module do
def foo
# Some complicated dataset here
where(:c => 42, :d => 23)
end
def bar
# Even more complicated dataset here
where(:a => 5, :b => 23).or(:a => 23, :b => 5)
end
def baz
where(:d => 17)
end
end
end
Run Code Online (Sandbox Code Playgroud)
我想查询数据库(foo || bar) && (bar || baz)(或其他一些复杂的数据集)。所以我试过了
User.where{|u| (u.foo | u.bar) & (u.bar | u.baz)}
Run Code Online (Sandbox Code Playgroud)
编辑:澄清:
SELECT * FROM users WHERE ((`foo` OR `bar`) AND (`bar` OR `baz`))
Run Code Online (Sandbox Code Playgroud)
SELECT * FROM users WHERE ((<dataset foo> OR <dataset bar>) AND (<dataset bar> OR <dataset baz>))
Run Code Online (Sandbox Code Playgroud)
其中<dataset xyz>意味着我定义的数据集。所以
<dataset foo> 被定义为 (c = 42 AND d = 23)
<dataset bar> 被定义为 ((a = 5 AND b = 23) OR (a = 23, b = 5))
<dataset baz> 被定义为 (d = 17)
如何使用AND,OR和(最重要的)括号链接数据集方法?
| 归档时间: |
|
| 查看次数: |
417 次 |
| 最近记录: |