我有点怀疑这是可能的,但我想我会试着看看社区是否可以帮我提出解决方案。
在我的应用中,用户可以创建发票,我试图允许他们从表单设置定期发票,这样他们就可以选择一个数字,一个间隔(年,月,日),然后从那里我将成为能够获得间隔。
理想情况下它会形成如下:1.year.from_now
这会给我发送下一张发票的日期。这是一个内置的rails帮助器,我想使用我的数据库中的信息来形成
所以在Invoice.create上,我检查一下这是一个定期发票,它将变成一个模板(Recurringinvoice),如果它是我创建它:
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等等。
无论如何我能做到这一点吗?有没有更好的解决方案我没想到?
答案 0 :(得分:1)
在ruby中,您可以使用send
方法按名称调用方法。
@invoice.invoice_interval_number
是一个整数。@invoice.interval
包含您要在整数上调用的方法的名称。from_now
是您要在上一个方法的结果上调用的方法。这给了我们:
@invoice.invoice_interval_number.send(@invoice.interval).from_now