【问题标题】:How to use sequel Dataset#where{} and access a specific field for comparision?如何使用 sequel Dataset#where{} 并访问特定字段进行比较?
【发布时间】:2018-02-17 09:52:27
【问题描述】:

我有三个表: Fellows、mappingtabl、在模型 Fellow 中具有 many_to_many 关联的 events,用于访问 Fellow 的事件。 像往常一样,一个人可以参加多项活动,许多人参加一个活动..

我发现不自己编码就很难过滤事件,或者我无法理解续集文档:

我想要一个特定同伴的未来事件列表...

@fellow=Fellow[PersID: @pers_id, JourneyID: @journey_id] 
@events=@fellow.events_dataset.where(Ruby: 'calc')
@events=@events.where{StartDate > Time.now()}

问题是,输出是:未初始化的常量 App::StartDate 虽然“StartDate”是 DB 中的相应列,但我从 Ruby 的角度理解输出。我从来没有告诉块 StartDate 是什么,此外它认为它是一个常数

如何告诉 sequel 比较存储在 Field events.StartDate 中的时间并将其与 Time.now 进行比较? 上面一行的直接选择使用哈希值对非常完美......

文档不是很有帮助,因为他们只是做我所做的事情:

items.where{credit > debit}.sql
# "SELECT * FROM items WHERE (credit > debit)

没有人告诉区块什么是贷方或借方......

知道如何在 where 子句的事件中访问字段 StartDate 吗?我可以迭代一个我自己的,但这有点奇怪......感觉如果数据集直接链接到表或只是关联的结果会有所不同。

【问题讨论】:

    标签: ruby associations where sequel


    【解决方案1】:

    您可以使用以下方法之一:

    @events=@events.where{StartDate() > Time.now()}
    @events=@events.where{self.StartDate > Time.now()}
    @events=@events.where{|o| o.StartDate > Time.now()}
    @events=@events.where(Sequel[:StartDate] > Time.now)
    

    【讨论】:

      【解决方案2】:

      @events=@events.where{events[:StartDate]> Time.now()}

      关键被隐藏在续集虚拟行文档中......

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-05-07
        • 2011-05-06
        • 2018-11-04
        • 2017-12-25
        • 1970-01-01
        • 2011-10-16
        • 1970-01-01
        相关资源
        最近更新 更多