我在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
答案 0 :(得分:0)
只需在url
模块内以及Url
模块之外定义ClassMethods
方法即可。那里定义的任何内容都将作为实例方法添加。
您可以将它放在InstanceMethods
模块中,但Rails最近更新ActiveSupport::Concern
以将ClassMethods
模块之外的任何内容视为实例方法。