Simplify validations on user
This commit is contained in:
parent
15bd24a64f
commit
555c15dfef
4 changed files with 6 additions and 14 deletions
|
|
@ -5,16 +5,6 @@
|
||||||
require File.join(Rails.root, 'lib/diaspora/user')
|
require File.join(Rails.root, 'lib/diaspora/user')
|
||||||
require File.join(Rails.root, 'lib/salmon/salmon')
|
require File.join(Rails.root, 'lib/salmon/salmon')
|
||||||
|
|
||||||
class InvitedUserValidator < ActiveModel::Validator
|
|
||||||
def validate(document)
|
|
||||||
unless document.invitation_token
|
|
||||||
unless document.person
|
|
||||||
document.errors[:base] << "Unless you are being invited, you must have a person"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
class User
|
class User
|
||||||
include MongoMapper::Document
|
include MongoMapper::Document
|
||||||
include Diaspora::UserModules
|
include Diaspora::UserModules
|
||||||
|
|
@ -50,11 +40,11 @@ class User
|
||||||
validates_presence_of :username
|
validates_presence_of :username
|
||||||
validates_uniqueness_of :username, :case_sensitive => false
|
validates_uniqueness_of :username, :case_sensitive => false
|
||||||
validates_format_of :username, :with => /\A[A-Za-z0-9_.]+\z/
|
validates_format_of :username, :with => /\A[A-Za-z0-9_.]+\z/
|
||||||
validates_with InvitedUserValidator
|
validates_presence_of :person, :unless => proc {|user| user.invitation_token.present?}
|
||||||
validates_inclusion_of :language, :in => AVAILABLE_LANGUAGE_CODES
|
validates_inclusion_of :language, :in => AVAILABLE_LANGUAGE_CODES
|
||||||
|
|
||||||
one :person, :class_name => 'Person', :foreign_key => :owner_id
|
one :person, :class_name => 'Person', :foreign_key => :owner_id
|
||||||
validate :person_is_valid
|
validates_associated :person
|
||||||
def person_is_valid
|
def person_is_valid
|
||||||
if person.present? && !person.valid?
|
if person.present? && !person.valid?
|
||||||
person.errors.full_messages.each {|m| errors.add(:base, m)}
|
person.errors.full_messages.each {|m| errors.add(:base, m)}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,8 @@ en:
|
||||||
models:
|
models:
|
||||||
user:
|
user:
|
||||||
attributes:
|
attributes:
|
||||||
|
person:
|
||||||
|
invalid: "is invalid"
|
||||||
username:
|
username:
|
||||||
taken: "is already taken"
|
taken: "is already taken"
|
||||||
email:
|
email:
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ describe RegistrationsController do
|
||||||
lambda { get :create, @invalid_params }.should_not change(User, :count)
|
lambda { get :create, @invalid_params }.should_not change(User, :count)
|
||||||
end
|
end
|
||||||
it "assigns @user" do
|
it "assigns @user" do
|
||||||
get :create, @valid_params
|
get :create, @invalid_params
|
||||||
assigns(:user).should_not be_nil
|
assigns(:user).should_not be_nil
|
||||||
end
|
end
|
||||||
it "sets the flash error" do
|
it "sets the flash error" do
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ describe User do
|
||||||
user.should_not be_valid
|
user.should_not be_valid
|
||||||
|
|
||||||
user.errors.full_messages.count.should == 1
|
user.errors.full_messages.count.should == 1
|
||||||
user.errors.full_messages.first.should =~ /serialized public key/i
|
user.errors.full_messages.first.should =~ /Person is invalid/i
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue