如何在rails应用程序中扩展Time类?

时间:2013-12-28 20:17:00

标签: ruby-on-rails ruby ruby-on-rails-4

基本上我想扩展Time类来添加这个方法:

def round_to_fifteen()
    return Time.at((self.to_i / 900).round * 900)
end

我如何实现这一点以及我应该在何处放置扩展类的文件?

2 个答案:

答案 0 :(得分:3)

传统上,这种事情都在lib/。我只需要初始化程序所需的lib/time_extensions.rb

您只需重新打开Time类并添加所需的方法,如下所示:

class Time
  def round_to_fifteen()
    return Time.at((self.to_i / 900).round * 900)
  end
end

然后,任何Time对象都将具有#round_to_fifteen方法。您可以在控制台中看到这一点:

2.0.0p247 :004 > class Time
2.0.0p247 :005?>   def round_to_fifteen()
2.0.0p247 :006?>       return Time.at((self.to_i / 900).round * 900)
2.0.0p247 :007?>     end
2.0.0p247 :008?> end
 => nil
2.0.0p247 :009 > Time.now.round_to_fifteen
 => 2013-12-28 13:15:00 -0700

答案 1 :(得分:1)

你可以把它放在你想要使用它的任何地方,你可以写

    class Time

      def round_to_fifteen
        return Time.at((self.to_i / 900).round * 900)
      end
    end

要使用此功能,您只需编写

即可
timestamp_object.round_to_fifteen