Concat Integer 和 String 组成方法

Concat Integer & String to form a method

我有点怀疑这是否可行,但我想我会尝试看看社区是否可以帮助我想出一个解决方案。

在我的应用程序中,用户可以创建发票,我试图让他们通过表格设置定期发票,这样他们就可以 select 一个数字、一个间隔(年、月、日)和从那里我可以得到一个间隔。

理想情况下它会形成这样的东西:1.year.from_now

这会告诉我发送下一张发票的日期。这是一个内置的 rails 帮助程序,我想使用我的数据库中的信息

所以 Invoice.create 我检查它是否是将变成模板 (Recurrininvoice) 的经常性发票,如果是我创建它:

    Recurringinvoice.create(customer_id: @customer.id, company_id: @company.id, 
invoice_number: @invoice.invoice_number, private_notes: @invoice.private_notes, 
customer_notes: @invoice.customer_notes, payment_terms: @invoice.payment_terms, 
status: "unpaid", discount: @invoice.discount, po_number: @invoice.po_number, 
interval: @invoice.interval, 
invoice_interval_number: @invoice.invoice_interval_number)

我想做什么:@invoice.invoice_interval_number + "." + @invoice.interval + ".from_now"

那会给我 1.year.from_now,或 2.days.from_now,等等

有没有办法让这一切发生?有没有我没有想到的更好的解决方案?

在ruby中,您可以使用send方法按名称调用方法。

  • @invoice.invoice_interval_number 是一个整数。
  • @invoice.interval 包含您要对 Integer 调用的方法的名称。
  • from_now 是您要在上一个方法的结果上调用的方法。

这给了我们:

@invoice.invoice_interval_number.send(@invoice.interval).from_now

文档:http://ruby-doc.org/core-2.2.3/Object.html#method-i-send