Ruby on rails 如何公开模型的所有可用液体方法?
我的几个模型定义了液体方法,使用:Ruby on rails 如何公开模型的所有可用液体方法?,ruby-on-rails,ruby-on-rails-2,liquid,Ruby On Rails,Ruby On Rails 2,Liquid,我的几个模型定义了液体方法,使用: class MyModel < ActiveRecord::Base liquid_methods :created_at, :foo, :bar, :baz end classmymodel
class MyModel < ActiveRecord::Base
liquid_methods :created_at, :foo, :bar, :baz
end
classmymodel
如何获得模型可用方法的列表(我想是散列或数组)?我想将可用方法的列表输出给在论坛帖子或电子邮件模板中使用这些方法的用户。我不知道它是否会有关于液体方法的不同行为,但您可以:
MyModel.methods
MyMethod.new.methods
无论是在类上还是在实例上,您都可以调用
.methods
来获取符号数组,这些符号是在该类或实例上使用的有效方法。然后您可以执行类似于.methods.sort
或.methods.sort\u by
等操作。我不知道它在液体方法方面是否会有不同的行为,但您可以执行以下操作:
MyModel.methods
MyMethod.new.methods
无论是在类上还是在实例上,您都可以调用.methods
来获取符号数组,这些符号是在该类或实例上使用的有效方法。然后,您可以执行类似于.methods.sort
或.methods.sort\u by
等操作。此功能:
MyModel.new.to_liquid.methods - Liquid::Drop.new.methods
这项工作:
MyModel.new.to_liquid.methods - Liquid::Drop.new.methods
保存不必要的实例化:
MyModel::LiquidDropClass.public_instance_methods - Liquid::Drop.public_instance_methods
# => [:foo, :bar, :baz] (or whatever your liquid methods are)
在模型上调用
liquid\u方法时,liquid会在模型的命名空间中创建LiquidDropClass
类,并保存liquid方法。省去不必要的实例化:
MyModel::LiquidDropClass.public_instance_methods - Liquid::Drop.public_instance_methods
# => [:foo, :bar, :baz] (or whatever your liquid methods are)
在模型上调用liquid\u方法时,liquid在模型的名称空间中创建LiquidDropClass
类,并保存liquid方法。因此,我得到:[333]liquid\u方法(*arg1)类(模块)
。MyModel.liquid\u方法不返回任何内容。建议?此解决方案返回所有方法,而不仅仅是液体方法。因此,这样做,我得到:[333]液体方法(*arg1)类(模块)
。MyModel.liquid\u方法不返回任何内容。建议?此解决方案返回所有方法,而不仅仅是液体方法。