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 trialSebastian Bachmann
7,046 Points[Done - Solution included] Build a custom validator that ensures that no Contactโs last_name is Evil.
Hi all,
i am stuck here again. And this time i don't even have a clue where to start. This is a bit over my head. So, if someone can push me in the right direction would be awesome.
Regards, Sebastian
3 Answers
Geoff Parsons
11,679 PointsCheck out the custom validators section of the Rails documentation to get started. In general you're going to want to define a custom validator that will inspect your last_name field and make sure it's not included in a list of unacceptable names.
Sebastian Bachmann
7,046 PointsThank you Geoff Parsons for the hint, i got it working now!
class Contact < ActiveRecord::Base
validate :last_name_is_not_evil
def last_name_is_not_evil
if last_name == "Evil"
errors.add(:last_name, "This is not a last name")
end
end
end
Jason Shultz
4,840 PointsI don't understand why this didn't work:
class GoodnessValidator < ActiveModel::Validator
def validate(record)
if record.lastt_name == "Evil"
record.errors[:base] << "This person is evil"
end
end
end
class Contact < ActiveRecord::Base
validates_with GoodnessValidator
end
Sebastian Bachmann
7,046 PointsHi Jason,
seems like there is an typo in your if clause. I am not able to check your code right now, but if the typo is not the problem, maybe you can post the error message as well.
Regards, Sebastian
Bharath Shetty
Courses Plus Student 5,805 Pointscheck line 3 it's "lastt_name" instead of last_name . Maybe that's the problem......