如何使用续集Dataset#where {}并访问特定字段进行比较?

时间:2018-02-17 09:52:27

标签: ruby associations where sequel

我有三个表:研究员,mappingtabl,模型Fellow中具有many_to_many关联的事件,以访问某个人的事件。 就像一个人一样可以参加多项活动,许多人也会参加活动..

我发现在没有自己编码的情况下过滤事件真的很难,或者我无法理解续集文档:

我想要一个特定家伙的未来事件清单......

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

问题是,输出是:未初始化的常量App :: StartDate 而“开始日期”#39;是DB中的相应列我理解Ruby透视图的输出。我从来没有告诉过块StartDate是什么,另外它认为它是一个常量

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

这些文档并不是很有用,因为它们做的很简单:

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

没有人告诉该区块有哪些信用卡或借记卡......

如何在where子句的事件中访问Field StartDate?我可以迭代我自己但这有点奇怪......如果数据集直接链接到表或只是关联的结果,它会产生影响。

2 个答案:

答案 0 :(得分:0)

@事件= @ events.where {事件[:开始日期]> Time.now()}

密钥隐藏在续集虚拟行文档中......

答案 1 :(得分:0)

您可以使用以下其中一项:

@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)