0

我在我的 Rails 应用程序中收到此错误:

ActiveRecord::StatementInvalid in PaymentsController#index

SQLite3::SQLException: ambiguous column name: date: SELECT COUNT(*) FROM "payments" INNER JOIN "invoices" ON "payments"."invoice_id" = "invoices"."id" WHERE "invoices"."user_id" = 1 AND (date >= '2013-01-01' and date <= '2013-12-31')

问题似乎是我的表和表中都有一个date字段。invoicespayments

但是我仍然不知道如何解决这个错误。

class User < ActiveRecord::Base

  def number_of_payments_in(year)
    payments.where("payments.date >= ? and payments.date <= ?", "#{year}-01-01", "#{year}-12-31").count
  end 

end

class Payment < ActiveRecord::Base

  def self.search(year)
    if year
      where("date >= ? and date <= ?", "#{year}-01-01", "#{year}-12-31")
    end
  end

end

有人可以帮忙吗?

4

1 回答 1

2

这个答案可能有点含糊,因为从您的问题中不清楚该self.search(year)方法属于哪个类,但如果这没有帮助,请告诉我,我们可以尝试更进一步。

我的猜测是,与number_of_payments_in方法不同,在self.search方法中您没有在where调用中指定适当的表。

number_of_payments_in,你指定payments.date,但在self.search你只是使用date。您说您的表和表date中都有一个字段,因此跨两个表的联接调用将需要每个引用都按表限定。invoicespaymentsdate

date在in前面添加适当的表格self.search(如您在 中所做的那样number_of_payments_in)可能会解决问题。

于 2013-05-18T18:49:28.560 回答