如何为模型公开所有可用的液体方法?

时间:2012-01-19 15:44:52

标签: ruby-on-rails ruby-on-rails-2 liquid

我的一些模型使用以下方法定义了液体方法:

class MyModel < ActiveRecord::Base
  liquid_methods :created_at, :foo, :bar, :baz
end

如何获取模型的可用方法列表(我猜想在散列或数组中)?我想将可用方法列表输出给在论坛帖子或电子邮件模板等内容中使用它们的用户。

3 个答案:

答案 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等操作。