连接Rails控制器中的表

时间:2016-02-28 12:42:49

标签: ruby-on-rails ruby

我希望能够从控制器返回一些数据,以便我可以使用gon gem在JavaScript中创建图形。

我有两种模式:

account:  id[PK, int], name[string], credit[boolean], active[boolean]
balance: id[PK, int], account_id[FK, int], balance[decimal], date[date]

class Account < ActiveRecord::Base
  has_many :balances
end

class Balance < ActiveRecord::Base
  belongs_to :account
end

对于指定日期@latestDate,我希望能够返回帐户[姓名],帐户[信用]和余额[余额]。

目前,使用下面的代码,我可以在给定日期返回balance对象,但如何返回已加入的account数据,以便我还拥有帐户[名称]和帐户[信用]。

代码:

  def statement
    @dates = Balance.select("distinct(date)").order('date desc')

    if (params[:date_id].blank?)
      if (Balance.count > 0)
        @latestDate = Balance.order('date desc').first.date
      else
        @latestDate = Date.current
      end
    else
      @latestDate = params[:date_id]
    end

    @summaryBalances = Balance.joins(:account).order('accounts.credit').where('date = :abc', {abc: @latestDate})

    gon.assets = @summaryBalances
  end

1 个答案:

答案 0 :(得分:0)

要获得帐户对象,您应该了解模型的关系。

ex)
 @summaryBalances.each do |ba|
   account = ba.account.name
 end

如果您想避免N + 1问题,您应该使用preload或include来预先缓存帐户对象。