问题
I am using Ruby on Rails 3.2.2 and Paperclip 2.7.0. I would like to retrieve data from the database where records/objects have an attached file (in my case it is an image file) and order those objects based on a set of pre-ordered values. That is, I have image_file_name
(handled by the Paperclip gem) and status
(status can be published
, unpublished
, blocked
) database table columns and I would like that:
- returned data contains primarily records/objects to which is associated an image (maybe this can be handled through the Paperclip gem);
- that objects retrieved at step #1 are sorted (in order of importance) by
blocked
,unpublished
and thenpublished
statuses;
More, if returned objects are less than 5, then I would like to "append" to those objects other objects but without caring "filters and ordering" as made in step #1 and #2.
How can I make that?
回答1:
This is datastore-dependent. If you want to order by specific values of a field in MySQL, for example, you can do:
Model.where('image_file_name is not null').order("field('status', 'blocked', 'unpublished', 'published')")
来源:https://stackoverflow.com/questions/10646374/how-to-retrieve-objects-that-have-an-attached-file-and-order-those-objects-based