我的一些模型使用以下方法定义了液体方法:
class MyModel < ActiveRecord::Base
liquid_methods :created_at, :foo, :bar, :baz
end
如何获取模型的可用方法列表(我猜想在散列或数组中)?我想将可用方法列表输出给在论坛帖子或电子邮件模板等内容中使用它们的用户。
答案 0 :(得分:1)
这有效:
MyModel.new.to_liquid.methods - Liquid::Drop.new.methods
答案 1 :(得分:1)
保存自己不必要的实例化:
MyModel::LiquidDropClass.public_instance_methods - Liquid::Drop.public_instance_methods
# => [:foo, :bar, :baz] (or whatever your liquid methods are)
当您在模型上调用liquid_methods
时,liquid会在模型的命名空间中创建LiquidDropClass
类,并且它会保留流动方法。
答案 2 :(得分:-1)
我不知道液体方法会有不同的行为,但你可以这样做:
MyModel.methods
MyMethod.new.methods
无论哪种方式,在类或实例上,您都可以调用.methods
来获取符号数组,这些符号是在该类或实例上使用的有效方法。然后,您可以执行.methods.sort
或.methods.sort_by
等操作。