Ruby on rails 如何检索具有附加文件的对象,并基于一组预先排序的值对这些对象进行排序?
我正在使用RubyonRails 3.2.2和曲别针2.7.0。我想从数据库中检索数据,其中记录/对象有一个附加文件(在我的例子中是一个图像文件),并根据一组预先排序的值对这些对象进行排序。也就是说,我有Ruby on rails 如何检索具有附加文件的对象,并基于一组预先排序的值对这些对象进行排序?,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,paperclip,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,Paperclip,我正在使用RubyonRails 3.2.2和曲别针2.7.0。我想从数据库中检索数据,其中记录/对象有一个附加文件(在我的例子中是一个图像文件),并根据一组预先排序的值对这些对象进行排序。也就是说,我有image\u file\u name(由回形针gem处理)和status(status可以是published,unpublished,blocked)数据库表列,我希望: 返回的数据主要包含与图像关联的记录/对象(可能可以通过回形针gem进行处理) 在步骤#1中检索到的对象按已阻止、未发布和
image\u file\u name
(由回形针gem处理)和status
(status可以是published
,unpublished
,blocked
)数据库表列,我希望:
已阻止
、未发布
和已发布
状态进行排序(按重要性顺序)李>
此外,如果返回的对象少于5个,那么我希望将其他对象“附加”到这些对象,但不关心步骤1和2中的“过滤器和顺序”
我如何做到这一点?这取决于数据存储。例如,如果要按MySQL中某个字段的特定值排序,可以执行以下操作:
Model.where('image_file_name is not null').order("field('status', 'blocked', 'unpublished', 'published')")
我不明白你所说的“关心”一组预先排序的值是什么意思。@x1a4-我的意思是,我想按状态设置为
已阻止,未发布然后已发布的顺序对对象进行排序(注意:我无法使用ASC
或DESC
语句来查找我要查找的内容)。我尝试了您的语句,但顺序(“字段('status','blocked','unpublished','published')”
似乎无法按预期工作。我通过使用顺序(“字段('status','blocked','unpublished','published')”)解决了这个问题(请注意,“
”没有引用status)……现在,如果返回的对象少于5个,那么如何将其他对象“附加”到这些对象上,而不考虑步骤#1和#2所做的“筛选和排序”集合谢谢。我打开了另一个与此相关的问题:。