Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Первая работа с БД 
:(
    Опции темы
Ramira
Дата 16.9.2009, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 16.9.2009

Репутация: нет
Всего: нет



В БД есть  три таблицы: maillists(id, name), subscribes(id, maillists_id), messages(id, maillists_id). Необходимо вывести на экран таблицу: Имя_рассылки(из maillists)  Кол-во_подписчиков (посчитать в subscribes)  Кол-во_выпусков(посчитать в messages).
Только начала разбирать ruby, работа с БД понимается с трудом. 



Это сообщение отредактировал(а) Ramira - 16.9.2009, 14:06
PM MAIL   Вверх
Ramira
Дата 16.9.2009, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 16.9.2009

Репутация: нет
Всего: нет



Более менее разобралась, сделала след.образом:

<% maillists=Maillist.find(:all, :conditions => "user_id=1") %> <!-- session[:user]-->
<% for m in maillists do %>
    <%= m.name_mailer %>
....
    <% subscribe = Subscribe.count(:all, :conditions => "maillist_id = #{ m.id }") %>
    <%= subscribe %>
    <% message = Message.count(:all, :conditions => "maillist_id = #{m.id}") %>
    <%= message %>
....
<% end %>

может кто-нибудь подскажет, где можно взять литературу о работе с БД в ruby? А то если бы мне не подсказали, в жизни бы не нашла, как это делается...



PM MAIL   Вверх
fixxer
Дата 17.9.2009, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: нет
Всего: 27



Код

maillists = Maillist.find_all_by_user_id(1)
for m in maillists do
  subscribe = m.subscribes.count(:all)
  message = m.messages.count(:all)
end


это при условии что в Maillist есть has_many :subscribes, :messages

Это сообщение отредактировал(а) fixxer - 17.9.2009, 14:29


--------------------
user posted image
PM MAIL ICQ   Вверх
source777
Дата 19.9.2009, 21:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: нет
Всего: 56



Лучше даже:
Код

maillists = Maillist.find_all_by_user_id(1)
for m in maillists do
  subscribe = m.subscribes.size
  message = m.messages.size
end


В таком варианте, если используются счётчики, то запрос к БД будет всего 1, иначе будет эквивалент кода, приведённого fixxer, только чуть короче.


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.1621 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.