gpt4 book ai didi

ruby-on-rails - 将两个常量合二为一

转载 作者:太空宇宙 更新时间:2023-11-03 16:25:06 28 4
gpt4 key购买 nike

有没有办法把这两个constance晒干?只是 bill 和 ship 的写法不一样,能不能用一个参数改,所以最后我只有一个 constance?

BILLING_ADDRESS_MAPPING = {
first_name: :bill_first_name_c,
last_name: :bill_last_name_c
}

SHIPPING_ADDRESS_MAPPING = {
first_name: :ship_first_name_c,
last_name: :ship_last_name_c
}

它们中的每一个都将在以后像这样使用:

  ship_address = Address.new

SHIPPING_ADDRESS_MAPPING.each do |rails_attr, sugar_attr|
ship_address.send(:"#{ rails_attr }=", sugar_opportunity.send(sugar_attr))
end

ship_address.save

最佳答案

ruby 中的常量是不允许动态变化的。但是,如果您不将 address_mapping 保持为常量,那么肯定有解决方法:

def address_mapping(type)
address_mapping = {
first_name: "#{type}_first_name_c".to_sym,
last_name: "#{type}_last_name_c".to_sym
}
return address_mapping
end

这是您的方法,您将在其中将“billing”或“shipping”作为字符串传递,结果应该如您所愿。

现在你应该像这样使用它:

ship_address = Address.new
address_mapping("shipping").each do |rails_attr, sugar_attr|
ship_address.send(:"#{ rails_attr }=", sugar_opportunity.send(sugar_attr))
end
ship_address.save

如果我理解错了请告诉我。希望对您有所帮助:)

关于ruby-on-rails - 将两个常量合二为一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26358847/

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