Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialgerald blady
9,052 Pointsdowncase email fails
I have no idea how this is failing? another set of eyes would be great.
Failures:
1) User#downcase_email downcases an email before saving Failure/Error: expect(user.save).to be_true expected: truthy value got: false # ./spec/models/user_spec.rb:53:in `block (3 levels) in <top (required)>' require 'spec_helper'
describe User do let(:valid_attributes){ { first_name: "Jerry", last_name: "Blady", email: "jerry@gmail.com", password: "treehouse1234", password_confirmation: "treehouse1234" } } context "validations" do let(:user) { User.new(valid_attributes) }
before do
User.create(valid_attributes)
end
it "requires an email" do
expect(user).to validate_presence_of(:email)
end
it "requires a unique email" do
expect(user).to validate_uniqueness_of(:email)
end
it "requires a unique email case insensitive" do
user.email = "MIKE@GMAIL.COM"
expect(user).to validate_uniqueness_of(:email)
end
it "requires email address to look like an email address" do
user.email = "jason"
expect(user).to_not be_valid
end
end
context "#downcase_email" do
it "makes the email attribute lower case" do
user = User.new(valid_attributes.merge(email: "JERRY@GMAIL.COM"))
expect{ user.downcase_email }.to change { user.email }.
from("JERRY@GMAIL.COM").
to("jerry@gmail.com")
end
it "downcases an email before saving" do
user = User.new(valid_attributes)
user.email = "MIKE@GMAIL.COM"
expect(user.save).to be_true
expect(user.email).to eq("mike@gmail.com")
end
end end
1 Answer
Thomas Johns
12,081 PointsI got the same error. If you create a user in the console (as u = User.create(first_name: "test"...etc)) with an email you can see it fail. If you then do u.errors you will most likely get an "Invalid Email". Jason's expression is the culprit for some reason.
Replace your format with this:
validates :email, presence: true,
uniqueness: true,
format: {
with: /\A[^@\s]+@([^@.\s]+\.)+[^@.\s]+\z/
}
or another one from here: http://stackoverflow.com/questions/4770133/rails-regex-for-email-validation
and it will work. Be sure to reload! if you are testing in the console.
Maciej Czuchnowski
36,441 PointsMaciej Czuchnowski
36,441 PointsWe can't help you if we don't see the whole code. There's got to be some small bit you overlooked while doing the project.