tho*_*mad 5 ruby ruby-on-rails yard
我有一个模块来帮助定义某些方法、常量和类方法。它正在动态地创建它们。我需要帮助了解如何使用 Yard Doc 的@macro功能来对齐文档并从包含的模块内部设置实例、类和常量文档。
在它的基本情况下,它看起来像这样:
module Constantizer
extend ActiveSupport::Concern
# @!macro [attach] define_constant
# @method $1?
# Is this a $1?
# @return [Boolean]
module ClassMethods
def define_constant(label, value, description)
const_set(label.to_s.upcase, value)
define_method("#{label}?") { self.id == value }
define_singleton_method(label) { find(value) }
end
end
end
class MyRecord < ActiveRecord::Base
include Constantizer
# @!parse include Constantizer
attr_accessor :label, :id
define_constant :one, 1, 'the number one'
define_constant :two, 2, 'the number two'
# ... etc ...
end
Run Code Online (Sandbox Code Playgroud)
这将define_constant创建一个实例方法、一个常量和一个类方法。
MyRecord::ONE #=> 1
MyRecord.one #=> MyRecord.find(1)
MyRecord#one? #=> true || false
Run Code Online (Sandbox Code Playgroud)
我在 SO和这篇文章上找到了这个答案,我可以通过上面看到的内容在实例方法级别进行排序。但是,我无法获取要记录的类方法或类上的常量。我尝试在里面添加相同类型的东西,ClassMethods但它正在使用label而不是传递给define_constant.
有点只是复制粘贴并试图猜测,所以我想我会问。
| 归档时间: |
|
| 查看次数: |
228 次 |
| 最近记录: |