ruby - 如何在 Ruby 中干掉两个函数?

标签 ruby ruby-on-rails-3

有没有办法通过将这两个函数共享的三行移动到另一个函数来DRY up这两个 Ruby 函数?

def format_currency(number)
  number_to_currency(number, 
    :unit       => current_user.currency_unit, 
    :delimiter  => current_user.currency_delimiter, 
    :separator  => current_user.currency_separator, 
    :format     => current_user.currency_format
  )
end

def format_currency_for_pdf(number, invoice)    
  number_to_currency(number / invoice.exchange_rate, 
    :unit       => CURRENCIES[invoice.currency]
    :delimiter  => current_user.currency_delimiter, 
    :separator  => current_user.currency_separator, 
    :format     => current_user.currency_format
  )
end

感谢任何帮助?

最佳答案

正如 taro 所暗示的,它将是:

def format_currency(number)
  number_to_currency(number,
    currency_hash(current_user.currency_unit)
  )
end

def format_currency_for_pdf(number, invoice)
  number_to_currency(number / invoice.exchange_rate,
    currency_hash(CURRENCIES[invoice.currency])
  )
end

def currency_hash unit
  {
    :unit       => unit,
    :delimiter  => current_user.currency_delimiter,
    :separator  => current_user.currency_separator,
    :format     => current_user.currency_format
  }
end

关于ruby - 如何在 Ruby 中干掉两个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24538101/

相关文章:

ruby-on-rails - 设计..首次登录后应要求更改密码

ruby-on-rails - 用于 Lazy HighCharts 的 Rails ActiveRecord group_by & sum db 结果

ruby-on-rails - 为什么 Foo.first 返回最后一条记录?

ruby-on-rails - Rails 3 date_select仅适用于年份

ruby-on-rails - 如何安装 PDFKit? (Rails 3.2.1 和 PDFKit 0.5.2)

ruby - Rake 依赖不执行但调用有效

mysql - 将值存储到整型变量中

ruby-on-rails - 下载和压缩使用 CarrierWave 上传到 S3 的文件

ruby - 数组的所有可能分布,来自一个数字

ios - 如何完全删除 calabash-ios/robotframework