我有两个模型,一个是 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/