DEV Community

n350071🇯🇵
n350071🇯🇵

Posted on

Append a method to all attributes with attribute_method_suffix in Rails

🔗 Parent Note

👍 You can add the same logic method to each attribute by write once

class Person < ActiveRecord::Base
  attribute_method_suffix '_changed?'
  attribute_method_suffix '_short?'

  private
    def attribute_changed?(attr)
      ...
    end
    def attribute_short?(attr)
      send(attr).length < 10
    end
end

person = Person.find(1)
person.name_changed?    # => false
person.name = 'Hubert'
person.name_changed?    # => true
person.name_short?      # => true
Enter fullscreen mode Exit fullscreen mode

📚 attribute_method_suffix

Top comments (0)