Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dtaniwaki/acts_as_hashids
Use Youtube-Like ID in ActiveRecord seamlessly.
https://github.com/dtaniwaki/acts_as_hashids
actioncontroller activerecord hashids rails ruby
Last synced: 4 days ago
JSON representation
Use Youtube-Like ID in ActiveRecord seamlessly.
- Host: GitHub
- URL: https://github.com/dtaniwaki/acts_as_hashids
- Owner: dtaniwaki
- License: mit
- Created: 2016-05-06T21:31:48.000Z (over 8 years ago)
- Default Branch: main
- Last Pushed: 2024-08-16T14:05:17.000Z (5 months ago)
- Last Synced: 2024-12-29T11:07:37.717Z (11 days ago)
- Topics: actioncontroller, activerecord, hashids, rails, ruby
- Language: Ruby
- Homepage:
- Size: 70.3 KB
- Stars: 88
- Watchers: 4
- Forks: 27
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# acts_as_hashids
[![Gem Version][gem-image]][gem-link]
[![Download][download-image]][download-link]
[![Build Status][build-image]][build-link]
[![Coverage Status][cov-image]][cov-link]
[![Code Climate][gpa-image]][gpa-link]Use [Hashids](https://github.com/peterhellberg/hashids.rb) (a.k.a. Youtube-Like ID) in ActiveRecord seamlessly.
## Installation
Add the acts_as_hashids gem to your Gemfile.
```ruby
gem "acts_as_hashids"
```And run `bundle install`.
## Usage
Activate the function in any model of `ActiveRecord::Base`.
```ruby
class Foo < ActiveRecord::Base
acts_as_hashids
endfoo = Foo.create
# => #foo.to_param
# => "ePQgabdg"Foo.find(3)
# => #Foo.find("ePQgabdg")
# => #Foo.with_hashids("ePQgabdg").first
# => #
```### Use in Rails
Only one thing you need to hash ids is put `acts_as_hashids` in `ApplicationRecord`, then you will see hash ids in routes URL and they are handled correctly as long as you use `find` to find records.
## Options
### length
You can customize the length of hash ids per model. The default length is 8.
```ruby
class Foo < ActiveRecord::Base
acts_as_hashids length: 2
endFoo.create.to_param
# => "Rx"
```### secret
You can customize the secret of hash ids per model. The default secret is the class name. The name of base class is used for STI.
```ruby
class Foo1 < ActiveRecord::Base
acts_as_hashids secret: 'my secret'
endclass Foo2 < ActiveRecord::Base
acts_as_hashids secret: 'my secret'
endFoo1.create.to_param
# => "RxQce3a2"Foo2.create.to_param
# => "RxQce3a2"
```### alphabet
Specify which characters you use to generate hashids.
```rb
class Foo < ActiveRecord::Base
acts_as_hashids alphabet: '0123456789uvwxyz'
endFoo.create(id: 1).to_param
# => "4xw8zwyv"
```## Test
Execute the command below to run rspec and rubocop.
```
bundle exec rake
```## Contributing
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new [Pull Request](../../pull/new/master)## Copyright
Copyright (c) 2014 Daisuke Taniwaki. See [LICENSE](LICENSE) for details.
[gem-image]: https://badge.fury.io/rb/acts_as_hashids.svg
[gem-link]: http://badge.fury.io/rb/acts_as_hashids
[download-image]:https://img.shields.io/gem/dt/acts_as_hashids.svg
[download-link]:https://rubygems.org/gems/acts_as_hashids
[build-image]: https://github.com/dtaniwaki/acts_as_hashids/actions/workflows/test.yml/badge.svg
[build-link]: https://github.com/dtaniwaki/acts_as_hashids/actions/workflows/test.yml
[cov-image]: https://coveralls.io/repos/dtaniwaki/acts_as_hashids/badge.png
[cov-link]: https://coveralls.io/r/dtaniwaki/acts_as_hashids
[gpa-image]: https://codeclimate.com/github/dtaniwaki/acts_as_hashids.png
[gpa-link]: https://codeclimate.com/github/dtaniwaki/acts_as_hashids