Bogdan Gusiev
Bogdan Gusiev

Reputation: 8305

Validate that string belongs to specific language alphabet

How can I validate Rails model string attribute that it belongs to specific language alphabet characters?

Thanks.

Upvotes: 1

Views: 695

Answers (3)

Luke
Luke

Reputation: 3381

There's a library called whatlanguage that recognize the languages of the string, example:

require 'whatlanguage'
"Je suis un homme".language      # => :french

Works with Dutch, English, Farsi, French, German, Swedish, Portuguese, Russian and Spanish out of the box, so it recognize Cyrillic too.

Upvotes: 2

Tate Johnson
Tate Johnson

Reputation: 3950

You'll want to validate the value of the attribute against a regular expression.

# Only match characters a-z
validates_format_of :attr, :with => /[a-z]/

Upvotes: 1

bjelli
bjelli

Reputation: 10090

validates_format_of seems to be the right thing for you. the documentation says:

Validates whether the value of the specified attribute is of the correct form by matching it against the regular expression provided.

  class Person < ActiveRecord::Base
    validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, :on => :create
  end

Note: use \A and \Z to match the start and end of the string, ^ and $ match the start/end of a line.

A regular expression must be provided or else an exception will be raised.

Upvotes: 0

Related Questions