我有一张表格,其中包含以下列:
“show_days_before_start”列的目的是将日期添加到“start_time”以确定记录何时应该开始出现在结果中(如果它超出此时间则不应显示)(此列可能包含值从7到21),“start_time”只是记录所指的事件开始时的日期时间戳。
我需要一个查询来执行上述操作并返回相关记录。在查询设计方面,最好的方法是什么?
答案 0 :(得分:2)
这是错误的做法。
将数据集插入数据库时应生成显示日期!添加名为display_time
的列:
add_column :table_name, :display_time, :timestamp
然后在模型中为attr_reader
attr_accessor
和display_time_reader
attr_accessor :display_time_reader
attr_reader :display_time_reader
然后定义display_time_reader=
方法:
def display_time_reader=(days_before_start)
self.display_time=self.start_time-days_before_start.days
end
然后您添加text_field :display_time_reader
(您还可以将值为7..21的下拉列表)添加到_form.html.erb
,当您输入5时,它将保存start_date
- 5天到display_time
字段。然后你可以查询:
ModelName.where("display_time > ?", Time.now)
这将是处理这个问题的一种干净方式!