DRY,如何避免在rails中重复方法

时间:2014-12-22 05:11:10

标签: ruby-on-rails ruby

我在课堂上这样做

Salesforce::Adapters::Person::MAPPINGS.invert.keys.each do |key|
  delegate key.to_sym,
         "#{key}=".to_sym,
         to: :person, 
         prefix: true
end

Salesforce::Adapters::EmergencyContact::MAPPINGS.invert.keys.each do |key|
    delegate key.to_sym,
         "#{key}=".to_sym,
         to: :emergency_contact, 
         prefix: true
end

我想干,任何想法我该怎么办?我试图在模块的类中进行迭代,但没有成功。

1 个答案:

答案 0 :(得分:1)

您可以尝试const_get

def dry_class module, type
  Object.const_get("Salesforce::Adapters::#{module}")::MAPPINGS.invert.keys.each do |key|
    delegate key.to_sym,
    "#{key}=".to_sym,
    to: type, 
    prefix: true
  end
end