你試圖做的事當然是可能的。當你將ActiveRecord :: Inflector指向類似的工作時,你是正確的。這種方法修改Fixnum
類本身來添加新的方法,雖然我不一般建議核心類的臨時補丁,你可以在active_support/core_ext/integer/inflections.rb
看到它在行動:
require 'active_support/inflector'
class Integer
# Ordinalize turns a number into an ordinal string used to denote the
# position in an ordered sequence such as 1st, 2nd, 3rd, 4th.
#
# 1.ordinalize # => "1st"
# 2.ordinalize # => "2nd"
# 1002.ordinalize # => "1002nd"
# 1003.ordinalize # => "1003rd"
# -11.ordinalize # => "-11th"
# -1001.ordinalize # => "-1001st"
#
def ordinalize
ActiveSupport::Inflector.ordinalize(self)
end
end
在你的情況下,我可能會做一些事情如:
module WeekdayInflector
def weekday
Date::DAYNAMES[self]
end
end
class Fixnum
include WeekdayInflector
end
這將至少幫助其他人通過查看模塊追蹤您添加的方法。請注意,這會影響Fixnum的所有實例,並且如果包含嘗試執行相同操作的Gem,可能會導致衝突。值得一提的是,這種折衷是否值得,或者定義一個簡單的視圖幫手是更好的選擇。
你想'2.my_module_method'返回'「星期二」'? –
有一個'wday'來獲得一天的整數值。就像這個例子'DateTime.parse(「Tuesdayy」)。wday#=> 3'。如果你想要一天,只需使用'yourdateObj.strftime('%A')'',不需要這些轉換。 – Pavan
不清楚。發佈定義。例如,在一個模塊中,self可以是模塊本身。 –