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 end
To 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'