Готовые SQL для преобразования в модули стиля Rails - PullRequest
0 голосов
/ 18 мая 2010

Я новичок в Rails и был бы очень признателен, если бы кто-то преобразовал эти SQL в законченные модули для rails. Я знаю, что это много, но я не могу просто использовать find_by_sql для всех из них. Или я могу?

Это SQL (они работают на MS-SQL):

SELECT STANJA_NA_DAN_POSTAVKA.STA_ID, STP_DATE, STP_TIME, STA_OPIS, STA_SIFRA, STA_POND FROM STANJA_NA_DAN_POSTAVKA INNER JOIN STANJA_NA_DAN ON(STANJA_NA_DAN.STA_ID=STANJA_NA_DAN_POSTAVKA.STA_ID) WHERE ((OSE_ID=10)AND (STANJA_NA_DAN_POSTAVKA.STP_DATE>={d '2010-03-30'}) AND (STANJA_NA_DAN_POSTAVKA.STP_DATE<={d '2010-03-30'}))

SELECT ZIGI_OBDELANI.OSE_ID,<br> ZIGI_OBDELANI.DOG_ID AS DOG_ID,<br> ZIGI_OBDELANI.ZIO_DATUM AS DATUM,<br> ZIGI_PRICETEK.ZIG_TIME_D AS ZIG_PRICETEK,<br> ZIGI_KONEC.ZIG_TIME_D AS ZIG_KONEC<br> FROM (ZIGI_OBDELANI INNER JOIN ZIGI ZIGI_PRICETEK ON ZIGI_OBDELANI.ZIG_ID_PRICETEK = ZIGI_PRICETEK.ZIG_ID )<br> INNER JOIN ZIGI ZIGI_KONEC ON ZIGI_OBDELANI.ZIG_ID_KONEC = ZIGI_KONEC.ZIG_ID<br> WHERE (ZIGI_OBDELANI.OSE_ID = 10) AND (ZIGI_OBDELANI.ZIO_DATUM >= {d '2010-03-30'}) AND (ZIGI_OBDELANI.ZIO_DATUM <= {d '2010-03-30'}) AND (ZIGI_PRICETEK.ZIG_VELJAVEN <> 0) AND (ZIGI_KONEC.ZIG_VELJAVEN <> 0)<br> ORDER BY ZIGI_OBDELANI.OSE_ID, ZIGI_PRICETEK.ZIG_TIME ASC

Эти SQL являются ежедневными рабочими часами, и я получил их как есть. Также у меня есть база данных, которая (как вы можете видеть из SQL-ов) не входит в соглашения Rails. Как P.S.:

  1. Такие вещи, как STP_DATE> = {d'2010-03-30' }) конечно даты (в словенском обозначении даты) и будет заменен на переменную (дата), чтобы пользователь мог выберите дату от и дату до.

  2. Все эти данные будут показаны в та же страница в таблице, так что, возможно, все в одном модуле? Или много? если это помогает, может быть.

Так кто-нибудь может мне помочь? Это для моей работы и моего первого проекта, и я новичок в Rails, и начальство становится стационарным (на самом деле они становятся довольно громкими)

Большое спасибо!

Итак, еще раз, я был бы очень признателен, если бы кто-то мог выполнить соответствующую часть модели хотя бы для одного из сложных SQL. Я буду читать все данные в одном контроллере и в одном действии. Все будет сделано за один проход.

Ответы [ 3 ]

1 голос
/ 19 мая 2010

На самом деле способ Rails справиться с этим - создать модели для каждой таблицы и создать отношения внутри модели.

Поскольку это устаревшая модель, вам нужно будет сделать следующее

class Stanja < ActiveRecord::Base
  set_table_name 'STANJA_NA_DAN'
  set_primary_key 'your-primary-key'
end

class Postavka < ActiveRecord::Base
  set_table_name 'STANJA_NA_DAN_POSTAVKA'
  set_primary_key 'STA_ID'
  has_many :stanjas, :foreign_key => 'sta_id', :primary_key => 'sta_id'
end  

что-то в этом роде. Не зная вашей модели и что, черт возьми, означают ваши названия таблиц :) Но я надеюсь, что это поможет вам.

Успех !!

0 голосов
/ 18 мая 2010

Это не то место, где можно просить людей «делай мою работу за меня», есть другие сайты, такие как Rent-a-Coder, где вы можете это сделать.

Однако, это место, куда можно обратиться за помощью, и я могу дать вам несколько советов.

Первое, что вы должны сделать, это начать понимать, какие у вас модели. Вы можете попробовать автоматически сгенерировать ваши модели, используя магические модели доктора Ника , хотя я ожидаю, что тот факт, что база данных не соответствует соглашениям ActiveRecord, может быть проблемой для вас.

В прошлом я добился определенного успеха с устаревшими базами данных, переименовав таблицы и столбцы в соглашения Rails и предоставив представление, которое отражает текущее соглашение об именах для существующих существующих приложений. Если бы вы смогли это сделать, то ваша жизнь была бы проще, так как вы могли бы использовать генераторы, такие как «Волшебные модели» или «1009» Райана Бейтса, изящные скаффолды , чтобы предоставить вам базовую структуру, чтобы затем начать работу.

Надеюсь, это поможет и удачи в вашем проекте.

0 голосов
/ 18 мая 2010

создать представления для этих sqls в базе данных и модель для каждого представления.

...