Performance: Form object pattern
MEDIUM IMPACT
This pattern affects server-side processing speed and user experience by managing form validations and data handling efficiently.
class UserForm include ActiveModel::Model attr_accessor :name, :addresses_attributes validates :name, presence: true validate :validate_addresses def save return false unless valid? ActiveRecord::Base.transaction do user = User.create!(name: name) addresses_attributes.each { |addr| user.addresses.create!(addr) } end true end private def validate_addresses # custom validation logic end end # In controller @form = UserForm.new(params[:user_form]) if @form.save # success end
class User < ApplicationRecord has_many :addresses validates :name, presence: true validates_associated :addresses end # In controller @user = User.new(user_params) if @user.save # saves user and addresses end
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Model with nested validations | N/A (server-side) | N/A | N/A | [X] Bad |
| Form object with transaction | N/A (server-side) | N/A | N/A | [OK] Good |