Class: BlockKit::Fixers::Truncate
- Defined in:
- lib/block_kit/fixers/truncate.rb
Instance Method Summary collapse
- #fix(model, fixing_dangerously: false) ⇒ Object
-
#initialize(attribute:, **options) ⇒ Truncate
constructor
A new instance of Truncate.
Methods inherited from Base
Constructor Details
#initialize(attribute:, **options) ⇒ Truncate
Returns a new instance of Truncate.
6 7 8 9 10 11 |
# File 'lib/block_kit/fixers/truncate.rb', line 6 def initialize(attribute:, **) super @maximum = .delete(:maximum) @omission = .delete(:omission) end |
Instance Method Details
#fix(model, fixing_dangerously: false) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/block_kit/fixers/truncate.rb', line 13 def fix(model, fixing_dangerously: false) return if dangerous? && !fixing_dangerously model.validate errors = errors_for(model) return unless errors.any? { |e| e.type == :too_long } value = model.attributes[attribute.to_s] maximum = @maximum.call(model) if @maximum.is_a?(Proc) maximum ||= @maximum new_value = if value.is_a?(Enumerable) value.first(maximum) else value.truncate(maximum, omission: @omission) end model.assign_attributes(attribute => new_value) end |