EasyOrderable
Easy ordering of Active Record objects.
Usage
class User < ApplicationRecord
include EasyOrderable
has_many :bookings
has_many :requests
end
class Booking < ApplicationRecord
include EasyOrdearble
belongs_to :user
end
class Request < ApplicationRecord
include EasyOrderable
belongs_to :renter, class_name: 'User', foreign_key: :user_id
end
#<User id: 1, first_name: 'A'>
#<User id: 2, first_name: 'B'>
#<User id: 3, first_name: 'C'>Sort by column name asc
>> User.assort('first_name')
=> [#<User first_name: 'A'>, #<User first_name: 'B'>, #<User first_name: 'B'>]Sort by column name desc
>> User.assort('-first_name')
=> [#<User first_name: 'C'>, #<User first_name: 'B'>, #<User first_name: 'A'>]Sort by joined column name
>> Booking.assort('-user.first_name')Sort by joined column name when associations name is custom
>> Request.assort('-user.first_name', user: :renter)Sort by multiple params
>> Booking.assort('-user.first_name,slot_places')You can use it from rails controller to handle json api compliant sort requests
class UsersController < ApplicationController
def index
@users = User.assort(order_param)
end
private
def order_param
params[:sort]
end
endInstallation
Add this line to your application's Gemfile:
gem 'easy_orderable'And then execute:
$ bundleOr install it yourself as:
$ gem install easy_orderableContributing
- Fork it
- Clone the project
git clone git@github.com:[YOUR GITHUB USERNAME]/easy_orderable.git cd easy_orderable- Install dependencies,
bundle install - Create your feature branch
git checkout -b my-new-feature - Write your feature, along with tests for your changes
- Run the tests
rake test, all must be green - Commit your changes
git commit -am 'Added some feature' - Push to the branch
git push origin my-new-feature - Create new Pull Request
Donating
If you enjoy using eod, you are free consider a small donation! 🙂 Buy me a cup of coffee
License
The gem is available as open source under the terms of the MIT License.