使用Rails,在date_select字段上设置更改默认日期的最佳方法是什么?

时间:2012-06-01 22:01:44

标签: ruby-on-rails ruby

我是Ruby / Rails的新手,这是我的第一个问题。我正在开发一个财务计划,它有一个月模型和一个交易模型,一个月有很多交易。我也在使用这里找到的awesome_nested_fields gem:https://github.com/lailsonbm/awesome_nested_fields

一切都很好但是当我添加新事务时,日期默认为今天。我希望它默认为添加到当前月份的最后一笔交易的日期。例如,如果我添加了日期为5/15/2012的交易,则下一个交易应默认为该日期。这样做的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

所以假设你在控制器中做了类似的事情:

class TransactionsController < ApplicationController

  def new
    @transaction = current_user.transactions.build
  end
end

将其更改为:

class TransactionsController < ApplicationController

  def new
    @transaction = current_user.transactions.build(date: current_user.next_transaction_date)
  end
end

然后在您的用户中,您可以找出使用日期

class User < ActiveRecord::Base

  def last_transaction_in_current_month
    transactions.where("date >= ?", Date.today.beginning_of_month).order("date desc").first
  end

  def next_transaction_date
    return Date.today if last_transaction_in_current_month.nil?
    last_transaction_in_current_month
  end
end