是否可以拥有一个ActiveRecord支持的Utility类?

时间:2013-11-26 05:29:56

标签: ruby-on-rails ruby activerecord

我有一个“实用程序”类:

class Hostname
 attr_reader :domain

 def initialize(hostname)
  @domain = Foo.bar(hostname)
 end
end

我做的事情如下:

$ Hostname.new('www.abc.com').domain 
> 'abc.com'

我希望这个类是ActiveRecord支持的,所以我可以将Hostname保存到我的数据库。

我已经阅读了许多反对覆盖ActiveRecord初始化方法的帖子。我是否需要为实用程序类设置单独的类/命名空间?

我想避免以下情况:

$ Hostname.new(:hostname => 'www.abc.com').domain
> 'abc.com'

什么是“轨道”方式?

1 个答案:

答案 0 :(得分:0)

你问的是关于rails的方式,所以在这里:

class Host < ActiveRecord::Base
  validates :name, presence: true

  def domain
    ActionDispatch::Http::URL.extract_domain(self.name)
  end
end

Host.find_by_name('www.abc.de').domain # => abc.de