0
我创建了一个模块结构来保存我不想存储在数据库中的静态数据。这样的事情:通过嵌套模块循环
module Vixen
module Cateories
module Amazon
module THREE_D_PRINTED_PRODUCTS
REFERAL_FEE_PERCENTAGE = .12
MINIMUM_REFERAL_FEE = 0
NAME = '3D Printed Products'
end
module AMAZON_DEVICE_ACCESSORIES
REFERAL_FEE_PERCENTAGE = .25
MINIMUM_REFERAL_FEE = 0
NAME = 'Amazon Device Accessories'
end
module AMAZON_KINDLE
REFERAL_FEE_PERCENTAGE = .15
MINIMUM_REFERAL_FEE = 0
NAME = 'Amazon Kindle'
end
module AUTOMOTIVE_AND_POWERSPORTS
REFERAL_FEE_PERCENTAGE = .12
MINIMUM_REFERAL_FEE = 1.00
NAME = 'Amazon Kindle'
end
end
end
end
我想选择模块下的元素。是否有可能像这样循环每个模块:
Vixen::Cateories::Amazon.each { | category | print category::NAME }
我知道此代码不起作用。
将数据存储在嵌套模块常量是一个聪明的想法,但它也太聪明了一半。嵌入散列的单个散列将更容易操作和迭代,并且作为将来可以从简单的YAML或JSON配置文件读入的东西的好处。常量旨在为定义它们的模块或类专用,而不是任意共享。这造成了一系列绑定关注并限制了您重构的能力。 – tadman 2014-10-18 04:14:44
你说你“不想把它存储在数据库中”,这可能是今天合理的关注,但这可能在未来不成立。我可以看到这个文件从四个简单的东西成长为几十个,几百个东西,其中一些需要根据其他或条件计算出它们的值。然后你把自己涂在一个角落里。 – tadman 2014-10-18 04:16:17
如果您发现答案有帮助,请考虑选择它。 – 2014-11-07 22:08:45