![]() |
|
![]() ![]() ![]() |
|
Kich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 9.12.2008 Репутация: нет Всего: нет |
Суть в следующем. Модели ActiveRecord
Есть модель пользователя (User). Есть модель "Comments" которая через ассоциации подключает в себя "users", но ассоциация users должна брать методы из модели User (таблица users) + расширять их столбцами из другой модели (таблица comment_users). Вопрос собственно в следующем. Как это реализовать? Я знаю, что руби динамический язык и умеет расширять классы. Мне то в принципе и надо по-сути расширить модель. Главный вопрос - How? |
|||
|
||||
shine |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 20.10.2006 Репутация: 2 Всего: 5 |
Знаете, если вы напишете пример кода который вы хотите чтобы работал и опишете что этот код должен в результате делать нам (или, как минимум, мне) будет проще понять что вы спрашиваете.
--------------------
An investment in knowledge always pays the best interest. © Benjamin Franklin |
|||
|
||||
Kich |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 9.12.2008 Репутация: нет Всего: нет |
shine
Ну если бы я знал код, который работал я нестал бы создавать тему на форуме. Если б я знал, что предполагаемый код должен работать, но по какойто причине не работает - я бы искал информацию в мануале или API А так есть только исходные данные: user.rb
Есть другая модель comment.rb
ну или... как предположение:
Задача этой всей канетели: Расширение модели. А именно: 1. "дописывание" а возможно переопределение методов и свойств модели в зависимости от контроллера и/или модели в которой мы находимся 2. обращение делать не через ассоциации а как сублимацию(объединение, склеивание, join) двух таблиц в рамках одной модели ( users и comment_users ). Зачем это надо? 1. Постижение динамичной природы Руби 2. гибкость 3. удобство 4. принцип DRY Это сообщение отредактировал(а) Kich - 11.12.2008, 01:05 |
||||||
|
|||||||
shine |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 20.10.2006 Репутация: 2 Всего: 5 |
Идея следующая. В руби мы можем добавлять методы в объект на лету. Например, у нас есть класс A и три объекта этого класса: obj1, obj2 и obj3. Кроме того у нас есть модуль B с функциями fun1 и fun2 ![]() Если мы выполним obj2.extend(B), то функции fun1 и fun2 станут определены в obj2, но не в obj1 и obj3. То есть мы добавляем модуль в конкретный объект. Имя класса контроллера вы элементарно получаете в любом экшене этого контроллера. Если добавить в объект примерно такой метод
То в контроллерах можно делать что-то такое:
Это подойдет если нужно чтобы сам объект руководил каким образом он должен изменяться в зависимости от контекста. Если же данные об этом должны приходить извне то тут вместо передачи в объект имени модуля передаем туда блок с нужными инструкциями. Ну а про объединение нескольких таблиц в одну модель я ничего не подскажу. Это сообщение отредактировал(а) shine - 11.12.2008, 15:51 --------------------
An investment in knowledge always pays the best interest. © Benjamin Franklin |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "Ruby on Rails" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Ruby On Rails | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |