我添加了这个方法
def self.addsub(days)
if date.year==(date+days).year
date=date+days
else
date=date-354+days
end
return date
end
对Date类的扩展,大部分看起来像这样:
class Date
include Holidays
# Get holidays on the current date.
#
# Returns an array of hashes or nil. See Holidays#between for options
# and the output format.
#
# Date.civil('2008-01-01').holidays(:ca_)
# => [{:name => 'New Year\'s Day',...}]
#
# Also available via Holidays#on.
def holidays(*options)
Holidays.on(self, options)
end
我尝试展开holidays-gem,但是当我尝试运行我的方法时,我总是这样做。
C:\...\Projekt 05.03.14\Timo\Testscripts>ruby jtt.rb
jtt.rb:5:in `<main>': undefined method `addsub' for #<Date: -4712-01-01 ((0j,0s,
0n),+0s,2299161j)> (NoMethodError)
有谁知道如何解决这个问题? 如果你想看到整个文件:
您可以在github ...
找到它编辑:
感谢Slicedpan ......他告诉我解决方案:
class Date
def addsub(days)
if self.year == (self + days).year
self + days
else
self - 354 + days
end
end
end
答案 0 :(得分:0)
您需要从方法定义中删除self
以生成实例方法。同样在该方法中,您可以使用self
class Date
def addsub(days)
if self.year == (self + days).year
self + days
else
self - 354 + days
end
end
end
答案 1 :(得分:0)
您的错误建议您在日期实例上调用addsub
方法,但是您在类上定义它(def self.<name>
是类方法)。相反,尝试:
def addsub(days)
date = if self.year == (date + days).year
date + days
else
date - 354 + days
end
date
end