Attributes
We use the term metaprogramming often in this book, and now you’ve seen it in action. In this case, metaprogramming means that Active Record adds attributes and methods to your code based on the structure of the database without you writing any code. In the end, you’ll code far less, but you’ll have to work a little harder to understand the magic that goes on under the covers. Once you understand how Active Record works, you will know exactly what attributes and methods your model supports. And that’s the secret to using Active Record.
Columns
Let’s review what happens when Ruby loads the Photo
class. The Photo
class inherits from the ActiveRecord::Base
class. When that class
loads from the class name Photo
,
Active Record infers that the class wraps a database table named
photos
. Base
then queries SQLite to retrieve
information about the photos
table,
including the definition of each of the columns in that table. Next,
Base
saves the definition of each
column into the @@columns
class
variable. (A class variable has a single value that all instances of the
class share.) @@columns
is an array
of Column
objects, with each column
having these attributes:
- name
The name of the database column.
- type
The Ruby type of the attribute this column will generate.
- number
A Boolean value that’s
true
if the column’s data is numeric. You’ll access it through the accessor methodnumber?
.- limit
The maximum size of the data element. For example, for a database column of type
varchar(45)
, the limit ...
Get Rails: Up and Running, 2nd Edition 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.