我有一个具有付费布尔属性的发票模型。帐户和发票之间存在关联,我想在视图中仅显示未付款的发票。
我用它来显示所有发票:
<table class="table">
<thead>
<tr>
<th>Invoice Number</th>
<th>Invoice Date</th>
<th>Invoice Total</th>
</tr>
</thead>
<tbody>
<% @account.invoices.each do |invoice| %>
<tr>
<td><%= invoice.id%> </td>
<td><%= invoice.created_at.time.to_formatted_s(:long)%> Zulu </td>
<td><%= invoice.total %></td>
</tr>
<% end %>
</tbody>
但我不确定如何将结果限制在只显示paid
为零的发票的地方。我尝试过:<% @account.invoices.each do |invoice| unless @account.invoices.paid == 'nil' %>
,但遇到错误。显然我的语法错了。有什么建议吗?
答案 0 :(得分:8)
在这种情况下,您可以使用named scope
。
在unpaid
模型中创建invoices
范围:
scope :unpaid, -> { where( paid: [nil, false] ) }
在视图中使用它,如下所示:
<% @account.invoices.unpaid.each do |invoice| %>