2.3.3 A user has_many microposts (Пользователь имеет_много микросообщений)
Одна из наиболее мощных функций Rails – возможность формировать связи между различными моделями данных. В случае нашей модели User у каждого пользователя потенциально есть много микросообщений. Мы можем выразить это в коде, обновив модели User и Micropost как в Листинге 2.10 и Листинге 2.11.
app/models/user.rbclass User < ActiveRecord::Base has_many :microposts end
app/models/micropost.rbclass Micropost < ActiveRecord::Base belongs_to :user validates :content, :length => { :maximum => 140 } end
Мы можем посмотреть результат этой ассоциации в Рис. 2.15. Из-за user_id столбца в таблице microposts Rails (используя Active Record) может вывести микросообщения, связанные с каждым пользователем.

Рисунок 2.15: Связь между микросообщениями и пользователями.
В Главе 11 и Главе 12, мы будем использовать ассоциацию пользователей и микросообщений и чтобы вывести на экран все микросообщения пользователя и чтобы создать Twitter-подобную подачу микросообщений. Пока, мы можем исследовать применение связи микросообщения-пользователь с помощью консоли, которая является полезным инструментом для взаимодействия с приложениями Rails. Мы сначала вызовем консоль командой rails console в командной строке, а затем получим первого пользователя из базы данных, используя User.first (поместив результаты в переменную first_user):13
$ rails console >> first_user = User.first => #<User id: 1, name: "Michael Hartl", email: "[email protected]", created_at: "2010-04-03 02:01:31", updated_at: "2010-04-03 02:01:31"> >> first_user.microposts => [#<Micropost id: 1, content: "First micropost!", user_id: 1, created_at: "2010-04-03 02:37:37", updated_at: "2010-04-03 02:37:37">, #<Micropost id: 2, content: "Second micropost", user_id: 1, created_at: "2010-04-03 02:38:54", updated_at: "2010-04-03 02:38:54">] >> exit
(Я включил последнюю строку только чтобы продемонстрировать, как выйти из консоли, и на большинстве систем Вы можете Ctrl-d с этой же целью.) Здесь мы получили доступ к микросообщениям пользователя, используя код first_user.microposts: с этим кодом Active Record автоматически возвращает все микросообщения с user_id равным id first_user (в данном случае, 1). Мы узнаем намного больше о средствах ассоциации (связи) в Active Record в Главе 11 и Главе 12.