Sha256: 921e212935a10c3617fb04ec65ae77f6f0237262a77fba9c5e5cdd10a7e5d638
Contents?: true
Size: 1.89 KB
Versions: 1
Compression:
Stored size: 1.89 KB
Contents
# ActiveRecord::SafeInitialize [![Build Status](https://travis-ci.org/lyconic/activerecord-safe_initialize.svg)](https://travis-ci.org/lyconic/activerecord-safe_initialize) Safely initialize an ActiveRecord attribute with respect to missing columns. ## Installation Add this line to your application's Gemfile: ```ruby gem 'activerecord-safe_initialize' ``` And then execute: $ bundle Or install it yourself as: $ gem install activerecord-safe_initialize ## Usage If you want to select subsets of SQL tables, you have to use `after_initialize` with care: ```ruby class Post < ActiveRecord::Base after_initialize { self.category ||= 'Default' } end Post.select([:title, :body, :published_at]).first # => ActiveModel::MissingAttributeError ``` To do this safely you must write: ```ruby class Post < ActiveRecord::Base after_initialize { self.category ||= 'Default' if has_attribute?(:category) } end ``` With `safe_initialize` you can write: ```ruby class Post < ActiveRecord::Base safe_initialize :category, with: 'Default' end ``` If `with` is a Symbol, `safe_initialize` will send it to `self` to get the value: ```ruby class Post < ActiveRecord::Base safe_initialize :uuid, with: :generate_uuid private def generate_uuid SecureRandom.uuid end end ``` If `with` is callable, it will `instance_exec` it to get the value: ```ruby class Post < ActiveRecord::Base safe_initialize :uuid, with: ->{ SecureRandom.uuid } end ``` You can set a default for multiple attributes at once: ```ruby class Employee < ActiveRecord::Base safe_initialize :pay_rate, :holiday_rate, with: 0.0 end ``` ## Contributing 1. Fork it ( https://github.com/lyconic/activerecord-safe_initialize/fork ) 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 a new Pull Request
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
activerecord-safe_initialize-0.1.0 | README.md |