gpt4 book ai didi

ruby-on-rails - 使用 active_model_serializers 将方法应用于所有属性

转载 作者:行者123 更新时间:2023-12-01 13:49:45 24 4
gpt4 key购买 nike

使用 rails-api/active_model_serializers ,可以将一种方法应用于所有属性吗?

基本上,我想申请

object.zeroed_value(:symbol) 

到每个属性,而不必为每个属性编写单独的方法。见示例:

class NutritionalSerializer < ActiveModel::Serializer
attributes :calories,
:sodium

def calories
object.zeroed_value(:calories)
end

def sodium
object.zeroed_value(:sodium)
end

# many, many more attributes...

end

最佳答案

我认为您可以使用元编程来生成您需要的所有方法,例如:

class NutritionalSerializer < ActiveModel::Serializer
attributes :calories,
:sodium

%i{attr1 attr2 attr3}.each do |attr|
define_method attr do
object.zeroed_value(attr)
end
end
end

您也可以覆盖 attributes序列化器的方法,然后执行以下操作:
class NutritionalSerializer < ActiveModel::Serializer
def attributes
data = super
%i{attr1 attr2 attr3}.each do |attr|
data[attr] = object.zeroed_value(attr)
end
data
end
end

关于ruby-on-rails - 使用 active_model_serializers 将方法应用于所有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32876628/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com