class RuboCop::Cop::Money::UnsafeToMoney
Money.new(“2.000”, “USD”) #<Money value:2.00 currency:USD>
# good
“2.000”.to_money(“USD”) #<Money value:2000.00 currency:USD>
# bad
@example
Use ‘Money.new` instead.
Prevents the use of `to_money` because it has inconsistent behaviour.
def autocorrect(node)
def autocorrect(node) lambda do |corrector| receiver = node.receiver.source args = node.arguments.map(&:source) args.prepend(receiver) corrector.replace(node.loc.expression, "Money.new(#{args.join(', ')})") end end
def on_send(node)
def on_send(node) return unless node.method?(:to_money) return if node.receiver.is_a?(AST::NumericNode) add_offense(node, location: :selector) end