Ruby on rails 3 为什么赢了';我的Rails模型是否保存到数据库中?

Ruby on rails 3 为什么赢了';我的Rails模型是否保存到数据库中?,ruby-on-rails-3,model,Ruby On Rails 3,Model,这是我在一个模型中的一个函数。它正确地返回语句,但不保存到数据库。为什么呢 generate函数如下所示: def self.build_prior_month(payee, as_of = Time.current, opts = {}) start_date, end_date, year, month = effective_dates(as_of) statement = payee.earnings_statements.build( :yea

这是我在一个模型中的一个函数。它正确地返回
语句
,但不保存到数据库。为什么呢

generate
函数如下所示:

  def self.build_prior_month(payee, as_of = Time.current, opts = {})    
    start_date, end_date, year, month = effective_dates(as_of)

    statement = payee.earnings_statements.build(
      :year => year,
      :month => month,
      :balance => 0,
      :revenue => 0
    )

    statement.generate(start_date, end_date, year, month)
    statement.update_totals

    statement
  end

关联上的
build
方法实际上不会将记录保存到数据库中<代码>创建将。这与型号上的
new
create
之间的区别类似

  def generate_ledger_items(start_date, end_date, year, month)
    payee.ledger_entries.for_month_and_year(month, year).each do |entry|
      earnings_statement_items.build(
        :items => entry.item_group,
        :units => entry.units,
        :net_revenue => entry.net_revenue,
        :net_revenue_per_unit => [entry.net_revenue, entry.units].all? ? (entry.net_revenue / entry.units).round(2) : nil,
        :fees => entry.service_fees,
        :payments_collected => entry.spendings,
        :fee_terms => entry.terms || entry.description, # When would terms be set?
        :due => entry.credit || -entry.debit
      )
    end
  end

  def update_totals
    self.revenue  = earnings_statement_items.net_revenue
    self.balance = earnings_statement_items.total
  end

将保存您的记录。请参阅。

.build不保存对象

电话:


因为你从不把它保存在数据库里。除非你在更新_总数中这样做
build
只创建对象,不保存到数据库。更新汇总的来源是什么?我可以使用
statement.save
statement = payee.earnings_statements.create(
  :year => year,
  :month => month,
  :balance => 0,
  :revenue => 0
)
statement.save