Czasami chcemy, aby niektĂłre z naszych modeli mogły korzystał ze wspĂłlnych metod. Poniższy przykład pokazuje, jak dodać funkcję hashującą:
Helper:
require 'digest/sha1'
module ShaHelper
def self.append_features(base) # :nodoc:
super
base.extend ClassMethods
end
module ClassMethods
def sha1(data)
Digest::SHA1.hexdigest data
end
end
end
Model:
class Post < ActiveRecord::Base
include ShaHelper
end
Użycie:
<%= Post.sha1 'test' %>
Unit Test:
[code ruby]require File.dirname(FILE) + ‘/…/test_helper’
class ShaHelperTest < Test::Unit::TestCase
include ShaHelper::ClassMethods
def test_sha1
assert_equals ‘a94a8fe5ccb19ba61c4c0873d391e987982fbbd3’, sha1(‘test’)
end
end[/code]