Organizing Structures

Ruby has two basic concepts for organizing methods: classes and modules. We cover each in turn.

Classes

Here’s a Ruby class definition:

1: class​ Order < ApplicationRecord
has_many ​:line_items
def​ self.​find_all_unpaid
self.​where​(​'paid = 0'​)
5: end
def​ ​total
sum = 0
line_items.​each​ {|li| sum += li.​total​}
sum
10: end
end

Class definitions start with the class keyword and are followed by the class name (which must start with an uppercase letter). This Order class is defined to be a subclass of the ApplicationRecord class.

Rails makes heavy use of class-level declarations. Here, has_many is a method that’s defined by Active Record. It’s called as the Order class is being ...

Get Agile Web Development with Rails 7 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.