Module: ActsAsBoolean::Extension
- Defined in:
- lib/acts_as_boolean.rb
Instance Method Summary collapse
- #acts_as_boolean(column_name, options = {}) ⇒ Object
- #define_booleany_reader(original_column, booleany_column, time) ⇒ Object
- #define_booleany_scope(original_column, booleany_column, time) ⇒ Object
- #define_booleany_writer(original_column, booleany_column, time) ⇒ Object
Instance Method Details
#acts_as_boolean(column_name, options = {}) ⇒ Object
8 9 10 11 12 13 14 |
# File 'lib/acts_as_boolean.rb', line 8 def acts_as_boolean(column_name, = {}) [:as] ||= ActsAsBoolean.normalize_column.call(column_name) [:time] ||= ActsAsBoolean.timeish define_booleany_reader(column_name, [:as], [:time]) unless [:reader] define_booleany_writer(column_name, [:as], [:time]) unless [:writer] define_booleany_scope(column_name, [:as], [:time]) unless [:scope] end |
#define_booleany_reader(original_column, booleany_column, time) ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/acts_as_boolean.rb', line 16 def define_booleany_reader(original_column, booleany_column, time) define_method("#{booleany_column}") do return false if send(original_column).nil? send(original_column) <= time.call end alias_method "#{booleany_column}?", booleany_column end |
#define_booleany_scope(original_column, booleany_column, time) ⇒ Object
34 35 36 |
# File 'lib/acts_as_boolean.rb', line 34 def define_booleany_scope(original_column, booleany_column, time) scope booleany_column.to_sym, -> { where("#{original_column} <= ?", time.call).where.not(original_column.to_sym => nil) } end |
#define_booleany_writer(original_column, booleany_column, time) ⇒ Object
24 25 26 27 28 29 30 31 32 |
# File 'lib/acts_as_boolean.rb', line 24 def define_booleany_writer(original_column, booleany_column, time) define_method("#{booleany_column}=") do |value| if ActiveModel::Type::Boolean::FALSE_VALUES.exclude?(value) send("#{original_column}=", time.call) else send("#{original_column}=", nil) end end end |