mysql - Rails ActiveRecord/SQL 查询最佳实践

标签 mysql ruby-on-rails ruby-on-rails-3 performance activerecord

我有一个包含以下列的表格:

  • show_days_before_start(整数)
  • 开始时间(DATETEXT)

“show_days_before_start”列的目的是将天数添加到“start_time”中,以确定记录何时开始出现在结果中(如果超出该时间,则不应显示)(此列可以有值从 7 到 21),“start_time”只是记录所引用的事件开始的日期时间戳。

我需要一个查询来执行上述操作并返回相关记录。在查询设计方面解决这个问题的最佳方法是什么?

最佳答案

这是错误的做法。 您应该在将数据集插入数据库时​​生成显示日期!添加名为 display_time 的列:

add_column :table_name, :display_time, :timestamp

然后在模型中添加 attr_readerattr_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 field 。然后你可以查询:

ModelName.where("display_time > ?", Time.now) 

这将是解决这个问题的一个干净的方法!

关于mysql - Rails ActiveRecord/SQL 查询最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8851631/

相关文章:

mysql - 如何在mysql中进行嵌套选择查询

c++ - MySQL createStatement() 内存泄漏

javascript - TinyMCE 限制scrollerActived 上的文本

ruby-on-rails - 根据到给定点的距离对 MongoDB 文档进行排序

ruby-on-rails - 如何在 Rails3 中使用 CanCan 在事件页面上显示 AccessDenied 错误

ruby-on-rails - 俄罗斯娃娃在 rails 上缓存

php - 将 sql(长文本)中的日期与 php 中的整数进行比较

mysql - 如何在mysql表中存储多个值

ruby-on-rails - Rails AR 日期范围查询 - 夏令时 - 重叠

ruby-on-rails - 设计:在同一个应用程序中使用可注册和可全认证