如何获取所有一种 Virtus 属性的列表?
How to get a list of all of one type of Virtus attribute?
如何获取所有类型的列表?
例如,所有 String 属性的列表?
有简单的 Virtus 解决方案还是我必须自己动手?
def my_model
include Virtus.model
attribute :a, Integer
attribute :b, Integer
attribute :c, String
attribute :d, String
attribute :w, Float
attribute :j, Float
end
我基本上想做 my_model.something = [:c, :d]
或者是否有任何其他方法以列表形式获取所有字符串属性?
我的最终目标是能够根据类型将属性拆分为各种验证。
您可以使用 attribute_set
方法和 primitive
来获取属性 Class 然后您需要编写自己的方法:
def self.get_string_attributes
attributes = []
self.attribute_set.each do |attribute|
attributes << attribute.name if attribute.primitive == String
end
attributes
end
我用你的 MyModel
得到了这个结果:
MyModel.get_string_attributes
=> [:c, :d]
o̶r̶y̶o̶u̶c̶a̶a̶n̶g̶o̶a̶a̶a̶s̶s̶e̶p̶
希望这就是您要找的。
如何获取所有类型的列表?
例如,所有 String 属性的列表?
有简单的 Virtus 解决方案还是我必须自己动手?
def my_model
include Virtus.model
attribute :a, Integer
attribute :b, Integer
attribute :c, String
attribute :d, String
attribute :w, Float
attribute :j, Float
end
我基本上想做 my_model.something = [:c, :d]
或者是否有任何其他方法以列表形式获取所有字符串属性?
我的最终目标是能够根据类型将属性拆分为各种验证。
您可以使用 attribute_set
方法和 primitive
来获取属性 Class 然后您需要编写自己的方法:
def self.get_string_attributes
attributes = []
self.attribute_set.each do |attribute|
attributes << attribute.name if attribute.primitive == String
end
attributes
end
我用你的 MyModel
得到了这个结果:
MyModel.get_string_attributes
=> [:c, :d]
o̶r̶y̶o̶u̶c̶a̶a̶n̶g̶o̶a̶a̶a̶s̶s̶e̶p̶
希望这就是您要找的。