V naší databázi máme více tabulek, mezi kterými jsou vztahy. Představme si například databázi jednoduchého blogu, ve které máme tyto dvě tabulky:
class Post < ActiveRecord::Base end class Person < ActiveRecord::Base end
Mezi těmito tabulkami existuje přirozený vztah daný tím, že každý příspěvek (Post) má jen jednoho autora (Person) a každý autor může mít více příspěvků. Je to vztah 1 ku n, (one to many). Takový vztah popíšeme příkazy has_many (má více) a belongs_to (patří k). V našem případě příspěvek (Post) patří k (belongs_to) člověku (Person). A obráceně Člověk (Person) má více (has_many) příspěvků (posts). V modelu to vypadá takto:
class Person < ActiveRecord
has_many :posts
end
class Post < ActiveRecord
belongs_to :person
endTo odpovídá databázi:
CREATE TABLE person (
id SERIAL,
first_name VARCHAR(30),
last_name VARCHAR(30),
⋮
);
CREATE TABLE post (
id SERIAL,
person_id INTEGER,
title VARCHAR(250),
content TEXT,
⋮
); WORKING: Editovat.
belongs_to :author, :class_name => 'Person', :foreign_key => 'author_id' has_many :posts, :foreign_key => 'author_id'
