rails日期函数的哈希

时间:2014-10-02 07:48:19

标签: ruby-on-rails ruby date hash

我有一些reocure的模型,它有频率,应该在它自己的创建上创建几个记录。 我正在尝试将整数频率(1,7,30)转换为(天,周,月)的函数,因此我可以将其添加到新记录中。

我尝试使用日期函数的哈希来实现它,以便像date+i.months()一样使用它:

date_hash={1=>days(), 7=>weeks(), 30=>months()}

但我收到了错误。

它应该在循环内部使用:

some_number.times do |i|   
    Record.create({...., :date => start_date+i.(date_hash[frequency]),....}) 
end

我收到了这个错误:

undefined method `days' for # <MyController:0x111111>

感谢您的协助。

1 个答案:

答案 0 :(得分:1)

你在这里有很多非Ruby。 Ruby并没有像你期望的那样提供一流的函数(date()会将该键的值赋给调用本地范围内可用的一些名为date的函数的结果。 ,你不能像这样调用变量方法名称。在Ruby中,对象(接收器)的方法调用是发送到接收器的消息,带有可选参数。您调用此类内容的典型方法是使用Object#send并使用所需的方法名称:

methods = {1 => :days, 7 => :weeks, 30 => :months}
x.send(methods[1])  # Calls x#days

然而,您的代码的意图相当不明确,并且可能有一种更好的方法来做您想要的事情。