我有一个在Rails 4项目中设置像这样的几个模型。有条件似乎去评估
student.rb
class Student < ActiveRecord::Base
has_many :contracts
def balance
unpaid_contracts.sum(&:sum_total)
end
private
def unpaid_contracts
unpaid_contracts = []
contracts.each do |c|
unpaid_contracts << c if c.unpaid? # This is the problem
end
end
end
contract.rb
class Contract < ActiveRecord::Base
has_many :invoices, dependent: :destroy
belongs_to :student
def unpaid?
return true if invoices.blank?
invoices.each do |i|
return true if i.current_status != "paid" && i.current_status != "rescinded"
end
end
end
无论我做什么所有的合同被添加到unpaid_contracts
。在db中根本没有发票,所以我会假设unpaid?
应该总是评估为真,对不对?
事实上,即使我将条件更改为unpaid_contracts << c if false
问题仍然存在。
您是否尝试过加载合同并使用'.unpaid?'它返回什么? – meagar