在我的客户控制器中,我有两个集合如下:
第一个是获取客户的集合,其中expiryDate列具有有效日期,如下所示:
@customer_with_expirydate = Customer.where.not(expiryDate: nil)
第二个是获取客户的集合,其中expiryDate列为nil或nnot,如下所示:
@customer_no_expirydate = Customer.where(expiryDate: nil)
现在我想将这两个集合的组合结果显示在一个表结构中,这里有一个条件就像列出所有expiryDate的客户之后只需要列出没有到期的客户。
我需要以下内容:
@all_customers = @customer_with_expirydate + @customer_no_expirydate
重要的是没有到期的客户应该追加到最后。
答案 0 :(得分:3)
只用一个查询做一些简单的事情怎么样?类似的东西:
@all_customers = Customer.order(expiryDate: :desc)
答案 1 :(得分:2)
@Praveen你已经给出了答案:
@all_customers = @customer_with_expirydate + @customer_no_expirydate
返回所有有效期限的客户,然后是没有到期日的客户。
类似地:
@all_customers = @customer_no_expirydate + @customer_with_expirydate
返回所有没有到期日的客户,然后是有到期日的客户。
Then you can loop @all_customers inside the table.
如果你只能使用一个查询,那么你应该使用:
@all_customers = Customer.order(expiryDate: :desc)
答案 2 :(得分:2)
让我们通过db查询对客户进行排序,它比使用数组追加更有效:
>>> [os.path.join(a, b) for a, b in zip(foo, bar)]
['/directory/1/1.txt', '/directory/2/2.txt']
因此@ordered_customers = Customer.order('expiryDate DESC NULLS LAST')
的客户将在结果的最后!