Skip to content

Instantly share code, notes, and snippets.

@VictorTpo
Last active March 17, 2016 09:02
Show Gist options
  • Save VictorTpo/36ca5215d68e2a5c9277 to your computer and use it in GitHub Desktop.
Save VictorTpo/36ca5215d68e2a5c9277 to your computer and use it in GitHub Desktop.
# gemfile
gem 'virtus'
# view
render 'forms/errors', form: @form
form_for @form, url: my_path do |f|
  f.input
  f.submit
end
# terms_controller.rb
def new
  @form = build_terms_form
end

def create
  @form = build_terms_form
  if @form.valid?
    # some code
  else
    # some other code
  end
end

def build_terms_form
  return TermsForm.new unless params[:terms_form].present?
  TermsForm.new(params[:terms_form])
end
# app/forms/terms_form.rb
class TermsForm
  include ActiveModel::Model
  include Virtus.model
  
  attribute :corporate_name, String
  attribute :legal_representer, Boolean
  
  validates_inclusion_of :legal_representer, in: [true], message: 'must be accepted'
  validate :valid_corporate_name?
  
  def valid_corporate_name?
    errors.add(:corporate_name, 'is not a real name') unless corporate_name.size < 2
  end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment