Как стать автором
Обновить
-1
0.3

Пользователь

Отправить сообщение

Без политики. Как навсегда преобразить уличные протесты с помощью мобильного приложения?

Время на прочтение4 мин
Количество просмотров22K
Последние N тысяч лет протестные собрания принципиально не менялись.

Собирается толпа протестующих и начинает что-то скандировать, — как правило короткими ритмичными фразами (толпа не способна на большее). Заводила начинает, толпа подхватывает и понеслось, пока инерция не погаснет или пока лидер не запустит новую кричалку. Получается довольно громко, но невнятно. Случайные прохожие даже не всегда в состоянии понять, чего именно хотят все эти люди? Ну да, «Гитлер — вор», а если конкретнее?

20-й век одарил митингующих звукоусиливающим оборудованием. И примитивные кричалки стали перемежаться с зажигательными речами ораторов. Круто? Круто! Эффект от такого собрания несравнимо больше.

Но есть две проблемы.
Читать дальше →
Всего голосов 61: ↑51 и ↓10+41
Комментарии231

has_many :through => Как быстро обратиться к join-объектам?

Время на прочтение3 мин
Количество просмотров7.2K
Вы знаете, что когда требуется организовать many-to-many отношения между двумя моделями, прогрессивная часть человечества применяет join-таблицы и метод has_many с опцией :through => :join_model_name. Каждая связь между двумя ActiveRecord-объектами представляет собой ActiveRecord-объект.

И это чудесно, ибо в join-таблице можно насоздавать полезных (так называемых «extra») полей с дополнительной информацией о связях между объектами.

Вопрос в том, как красиво достучаться до этих extra атрибутов.

Все скринкасты и книжки, как назло, оперируют простыми примерами. Например, дружат между собой модели Article и Category. Само собой, для join-класса интуитивно напрашивается имя Categorization или ArticleCategorization.

has_many through

Соответственно, если у нас есть два объекта — article и category, и мы хотим найти AR-объект (или объекты), олицетворяющий связь между ними, то авторы книжек с чистым сердцем предлагают делать так:

relations = article.article_categorizations.find_by_category_id(category)


В жизни все сложнее. Модели нередко имеют длинные составные имена, либо между моделями такая связь, что придумывание имени для каждой join-модели превращается в маленькую пытку. Представим, что у нас модели не Article и Category, а UserGroup и Community, или Preorder и CustomerNotification. Как должна называться связующая модель? Возможны варианты.

Читать дальше →
Всего голосов 36: ↑32 и ↓4+28
Комментарии11

Информация

В рейтинге
1 892-й
Зарегистрирован
Активность