For every field (also known as an attribute) you define in your table, Active Record provides a finder method.
- If you have a field called
first_name
on your Client model for example, you getfind_by_first_name
andfind_all_by_first_name
for free from Active Record. - If you have a
locked
field on the Client model, you also getfind_by_locked
andfind_all_by_lockedmethods
. - You can also use
find_last_by_*
methods which will find the last record matching your argument. - You can specify an exclamation point (
!
) on the end of the dynamic finders to get them to raise anActiveRecord::RecordNotFound
error if they do not return any records, likeClient.find_by_name!("Ryan")
If you want to find both by name and locked, you can chain these finders together by simply typing and between the fields. For example, Client.find_by_first_name_and_locked("Ryan", true)
.