Object types that are represented in the database are called domain objects. You need to write a class definition for each different domain object type.
First, so we have a domain object type, let's create a User type. Log into MySQL and create a users table:
create table users ( pk_id int not null auto_increment, primary key (pk_id), first_name varchar(64), last_name varchar(64), email varchar(64) not null, password varchar(64) not null, birthday date );
Note that the primary key is named
pk_id. Lafcadio is fairly flexible about what your tables look like, but it requires each table to have a numeric primary key. It assumes that it's going to be named
pk_id, and that can be changed, but it's a little less work to go with the default.
Although we're creating a new table in this example, Lafcadio can also be integrated with pre-existing tables with only a little more work.
Next, write a child of DomainObject which defines the fields. Let's put this at the end of
class User < Lafcadio::DomainObject string 'first_name' string 'last_name' string 'email' string 'password' date 'birthday' end
You write one field directive for every field in the table, except for
pk_id. For style reasons, Lafcadio expects the table name to be the plural (
users) and expects the domain class type to be singular (
User). You can override this assumption if you like.