8000 GitHub - jamst/default_where: Default params process for where query · GitHub
[go: up one dir, main page]

Skip to content

About

Default params process for where query

Resources

Stars

1 star

Watchers

1 watching

Forks

 
 

Latest commit

 

History

72 Commits

Folders and files

Repository files navigation

DefaultWhere

This Library set default params process for where query in ActiveRecord

Features and Usage

Normal equal params

  • Params:
# rails 4 and  above, default_where does nothing
params = { role_id: 1, age: 20 }
User.default_where(params)

Equal params with association

  • params
User.belongs_to :role
params = { name: 'dhh', 'role.id': 2 }
  • Before use default_where
User.includes(:student).where(name: params[:name], role: {id: params[:'role.id']})
  • After Use default_where
User.default_where(params)

Range params

  • params
params = { 'role_id-lte': 2 }
  • Before use default_where
User.where('role_id >= ?', params[:'role_id-lte'])
  • After use default_where
User.default_where(params)

Auto remove blank params by default, no need write query with if else

  • params
params = { age: '', role_id: 1 }
  • Before use default_where
users = User.where(role_id: params[:role_id])
users = users.where(age: params[:age]) if params[:age]
  • After use default_where
User.default_where(params)

Order params

  • Params
params = { o1: 'age-asc', o2: 'last_login_at-asc' }
  • Before use default_where
User.order(age: :asc, last_login_at: :asc)
  • After use default_where
User.default_where(params)

A sample with all params above

  • Params
{ name: 'dhh', 'role.id': 2, 'age-lte': 2, o1: 'age-asc', o2: 'last_login_at-asc' }
  • Before use default_where
User.includes(:role).where(name: params[:name], 'roles.id': params[:'role.id']).order(age: :asc, last_login_at: :asc)
  • After use default_where
User.default_where(params)

It will generate the query scope to above params must use string key

About

Default params process for where query

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

0