【问题标题】:How to get events between the current time and from the given time from mysql with ruby on rails如何使用 ruby​​ on rails 从 mysql 获取当前时间和给定时间之间的事件
【发布时间】:2014-08-21 10:12:19
【问题描述】:

我有一个 Event 模型和表及其

  t.integer :user_id
  t.integer :segmentation_id

  t.datetime :login_screen
  t.datetime :item_added_to_cart
  t.datetime :purchase_screen
  t.timestamps

这是我的迁移文件。

在我看来,我有一个表单,我正在尝试根据用户的输入创建一个新段。我正在获取事件和日期范围。事件是我的事件表的列名,除了外键和创建的时间戳。

因此用户将能够选择其中之一。

假设用户输入 login_screen 作为第一个事件并给出 7 作为日期范围,我需要在当前时间和当前时间之前的 7 天之间获取 login_screens 事件。因为我有一个 user_id,所以我可以访问哪个用户做了无论如何,该事件。我需要做的就是根据给定的日期范围获取事件。

我真的不想用mysql代码来做这件事,而且我还是个rails新手。

【问题讨论】:

  • 那么 tl;dr 是您想在上周使用 login_screen 获取记录吗?
  • @MarekLipka ,没有事件名称和日期范围将来自用户,但基本上是的,我想要给定日期范围之间的事件记录

标签: mysql sql ruby-on-rails ruby ruby-on-rails-4


【解决方案1】:

您可以这样做,假设 range_startrange_end 是用户提供的 TimeDate 对象:

Event.where(login_screen: range_start..range_end)

【讨论】:

  • 您能详细说明一下吗?如何将动态输入作为 range_start 或事件名称提供?
  • @railsnewbie “动态输入”是什么意思?你到底想做什么?
  • 正如我在评论中解释的那样,用户可以选择三个事件之一,我可以毫无问题地获取输入,我可以将其用作参数 [:segmentation][:first_event] 它不是 login_screen它可能是其中任何一个。我从用户那里得到的另一件事是日期范围,所以我想我们可以说 range_end 是 Time.current 但 range_start 将是我猜像 Time-params[:segmentation][ :date_range]
  • 嘿伙计,我一直在寻找文档,但找不到任何 range_start 或 range_end 方法。你能帮帮我吗
【解决方案2】:

放入您的代码:-

data = Event.where("login_screen>= ? AND login_screen <= ?",Time.now ,login_screen)

更好的方法

@selected_date=params[:login_screen]
Event.where(:login_screen => Time.now.beginning_of_day..@selected_date.end_of_day)

...按照你需要的方式尝试一下

【讨论】:

  • 这没有任何意义,params[:login_screen] 甚至不存在。如果您的意思是 params[:segmentation][:login_screen] 它只是一个我保存事件名称的字符串。它与日期无关
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-31
  • 2011-09-24
  • 2019-11-09
  • 1970-01-01
  • 2012-02-29
  • 2012-04-25
  • 1970-01-01
相关资源
最近更新 更多