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, 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 defined. Normally ...

Get Agile Web Development with Rails 5.1 now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.