按行排序的问题(特殊情况)
我需要按primary_contact_no 对联系人记录进行排序。
我的联系人字段包含primary_contact_no、email、mobile_no。
这很简单......
但是我的观点要求我在primary_contact_no不存在时在联系号码(查看标签)下显示mobile_no。
Contacts.find(:all, :order => "primary_contact_no")
现在,当我按 primary_contact 排序时,在视图中,缺少这些字段的记录将被替换为 mobile_no 但由于它们已经按 contact_no 排序,因此它们显示在底部的搜索结果。
我如何组合两个结果(如果primary_contact不存在并对组合记录进行搜索)
是否有任何其他解决方案可以组合行搜索记录或类似的问题???
聚苯乙烯 我已经使用了将分页。
I have a requirement for sorting Contacts records by primary_contact_no.
My Contact fields contain primary_contact_no ,email , mobile_no.
this is no brainier....
BUT my view requires me to show mobile_no under Contact Number(view label) when primary_contact_no is not present.
Contacts.find(:all, :order => "primary_contact_no")
Now When i sort it by primary_contact , in the view , the records where these fields are absent get replaced with mobile_no but since they are already sorted by contact_no they appear at the bottom of the search result.
How can i combine the two results ( in case primary_contact is not present and carry out search on the combined record )
Is there any other solution to the problem where i can combine the row search records or something like that???
P.S.
I have used will paginate.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
从数据库中检索到它们后,您就可以订购。
那么
在你的联系模型中
You could order once you retrieve them from the database.
So
Then in your Contact Model
MySQL 和 PostgreSQL 都有 COALESCE 函数,因此您可以执行以下操作:
根据需要对记录进行排序。但请注意,使用 sql 函数和原始 sql 有其注意事项。如果您决定切换数据库,则必须检查新的 RDBMSI 是否支持您使用的每个原始 sql 和 sql 函数。
我不会对应用程序中的记录进行排序,因为这意味着我无法使用分页来选择有限的数据,而必须检索完整的记录集,对它们进行排序,然后根据分页参数使用相关记录。随着联系人表的增长,它将持续增加响应时间。
MySQL and PostgreSQL both have COALESCE function, so you can do something like:
to sort the records as you want. But beware, using sql functions and raw sql has its caveats. If you decide to switch databases, you have to check if each raw sql and sql function you used like this is supported in your new RDBMSI.
I would not sort the records in my application, as that means, I can not use pagination of will paginate to select limited data and have to retrieve full set of records, sort them and then use the relevant records based on pagination parameters. It will increase the response time consistently as the contacts table grows.