Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何公开模型的所有可用液体方法?_Ruby On Rails_Ruby On Rails 2_Liquid - Fatal编程技术网

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方法不返回任何内容。建议?此解决方案返回所有方法,而不仅仅是液体方法。