0

私はこのファイルを持っていますmodels/extensions/url.rb

module Extensions
  module Url
    extend ActiveSupport::Concern

    included do
    end

    module ClassMethods
      def acts_as_url(attribute)
      end
    end

    module InstanceMethods
    end
  end
end

次に、次のようなモデルを作成できます。

class Post
  include Mongoid::Document
  include Mongoid::Timestamps
  include Extensions::Url

  acts_as_url :title

  field :title, :type => String
end

拡張モジュールのどこで、各インスタンスにメソッド/アクセサーが呼び出されるようにして、フィールド (属性パラメーターとして渡される) にurlアクセスし、次のことができるようにすることができます。:title

post = Post.find(params[:id])
puts post.url
4

1 に答える 1

0

モジュール内とモジュール外でurlメソッドを定義するだけです。そこで定義されたものはすべて、インスタンス メソッドとして追加されます。UrlClassMethods

モジュールに入れることはできますInstanceMethodsが、Rails は最近更新さActiveSupport::Concernれ、モジュールの外側にあるものはすべてClassMethodsインスタンス メソッドとして扱うようになりました。

于 2012-05-14T18:42:01.813 に答える