Skip to content

Instantly share code, notes, and snippets.

@jopotts
Last active August 13, 2022 16:26
Show Gist options
  • Star 16 You must be signed in to star a gist
  • Fork 7 You must be signed in to fork a gist
  • Save jopotts/7301500 to your computer and use it in GitHub Desktop.
Save jopotts/7301500 to your computer and use it in GitHub Desktop.
Simple default values on creation of ActiveRecord models
module DefaultValues
def has_default_values(default_values = {})
class_attribute :default_values
self.default_values = default_values
after_initialize :assign_default_values
include InstanceMethods
end
module InstanceMethods
private
def assign_default_values
return unless new_record?
default_values.each do |key, value|
self[key] = value if self[key].nil?
end
end
end
end
# In config/initializers
ActiveRecord::Base.extend DefaultValues
# Example usage
class SomeModel < ActiveRecord::Base
has_default_values(
title: "Default",
flag_yn: false
)
..
end
@goodbedford
Copy link

Thats a cool way to add default values and it looks reusable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment