ruby-on-rails - 时间和变量的ruby比较

标签 ruby-on-rails ruby

我有两个模型,一个是 Employee 一个是 WorkingPattern。 Employee 的实例 belongs_to 工作模式。

工作模式是这样的

        :id => :integer,
      :name => :string,
       :mon => :boolean,
       :tue => :boolean,
       :wed => :boolean,
       :thu => :boolean,
       :fri => :boolean,
       :sat => :boolean,
       :sun => :boolean

我需要知道某个员工今天是否应该上类。因此,如果今天是星期二并且该员工的工作模式记录报告 :tue = true 然后返回 true,等等。我没有重命名 WorkingPattern 模型上的字段以匹配日期名称的选项。

我知道

Time.now.strftime("%A")

将返回当天的名称。然后我发现我可以通过做得到字符串的前 3 个字符

Time.now.strftime("%A")[0,3]

所以现在我将“Tue”作为字符串返回。添加一个小写

Time.now.strftime("%A")[0,3].downcase

现在我有了“tue”,它与 WorkingPattern 上的 :tue 符号匹配。

现在我需要一种方法来根据正确的日期检查字符串,理想情况下,这种方式并不意味着每个员工都要对数据库进行 7 次查询!

谁能给个建议?

最佳答案

您可以使用 %a 作为缩写的工作日名称。并使用send动态调用一个方法

employee.working_pattern.send(Time.now.strftime("%a").downcase)

关于ruby-on-rails - 时间和变量的ruby比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25513576/

相关文章:

java - 如何创建带有 GUI 的 JRuby 应用程序并打包它?

jquery - 使用 will_paginate Rails 4 的 Ajax 请求

ruby-on-rails - 错误 : Too many redirects

ruby-on-rails - rake 数据库 :seed failing on pending migration when there are none

mysql - 保存时,Ruby on Rails/MySQL 字符串中的特殊字符会转换为 "?"

mysql - ruby on Rails mysql2::错误: 'pay_status' 中的未知列 'field list'

php - PHP MD5 key 的等效 ruby​​ 代码

ruby-on-rails - 从两个 Rails 服务器在 Sidekiq 中排队和运行作业

ruby-on-rails - rails : NoMethodError in production only

jquery - Rails 3.2.1 Jquery 自动完成