如何在没有接收器的情况下使用Ruby的send方法?

时间:2016-07-15 13:30:39

标签: ruby-on-rails

我正在尝试将用户输入转换为“6个月”转换为Ruby方法àla6.months

如何做到这一点?

我在第10行遇到undefined method 6.months错误。

感谢您的帮助。

class Coupon < ActiveRecord::Base

  def self.duration_options
    ["3 years", "2 years", "1 year", "6 months", "3 months", "1 month"]
  end

  def end_at
    if Coupon.duration_options.include?(duration)
      method = duration.sub!(' ', '.')
      time = Time.zone.now + send(method)
    end
    time
  end

end

1 个答案:

答案 0 :(得分:2)

您的send在对象本身上,在这种情况下是self.send(method)

你可以这样做

if Coupon.duration_options.include?(duration)
  off_set = duration.split(" ")
  time = Time.zone.now + off_set.first.to_i.send(off_set.last.to_sym)
end
time