2010-05-18 1 views
0

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

Таковы SQLs (они работают на 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,
ZIGI_OBDELANI.DOG_ID AS DOG_ID,
ZIGI_OBDELANI.ZIO_DATUM AS DATUM,
ZIGI_PRICETEK.ZIG_TIME_D AS ZIG_PRICETEK,
ZIGI_KONEC.ZIG_TIME_D AS ZIG_KONEC
FROM (ZIGI_OBDELANI INNER JOIN ZIGI ZIGI_PRICETEK ON ZIGI_OBDELANI.ZIG_ID_PRICETEK = ZIGI_PRICETEK.ZIG_ID)
INNER JOIN ZIGI ZIGI_KONEC ON ZIGI_OBDELANI.ZIG_ID_KONEC = ZIGI_KONEC.ZIG_ID
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)
ORDER BY ZIGI_OBDELANI.OSE_ID, ZIGI_PRICETEK.ZIG_TIME ASC

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

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

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

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

Спасибо вам большое!

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

ответ

0

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

+0

Невозможно, потому что такие приложения, как {d '2010-03-30'}), включены в приложение. Эти SQL являются лишь примерами для одного конкретного случая. В действительности даты и идентификаторы пользователя (например, OSE_ID = 10) вводятся пользователем – Hoornet

0

На самом деле это не место, где можно спросить людей: «Сделай свою работу для меня», есть другие сайты, такие как rent-a-coder, где вы можете это сделать.

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

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

У меня был некоторый успех в прошлом с устаревшими базами данных, переименовывая таблицы и столбцы в соглашения Rails и предоставляя представление, которое отражает существующее соглашение об именах для существующих устаревших приложений. Если бы вы смогли это сделать, тогда ваша жизнь была бы проще, чем вы могли бы использовать генераторы, такие как Magic Models, или Ryan Bates nifty scaffold, чтобы предоставить вам базовую структуру, чтобы потом начать работать.

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

+0

Вот почему я сказал, что это сложно. Мне не нужна работа, проделанная для меня. Мне нужен пример, по крайней мере, одного из сложных SQL-запросов, которые я написал преобразованными, чтобы я мог моделировать остальные. Весь другой текст, который я написал, помогали людям, чтобы знать, о чем это. Также я взглянул на «магические модели доктора Ника» ранее, я написал это, но не верю, что это помогает в этом случае. Также у меня есть базовая структура, но все это делается с использованием SQL-систем совсем не в стиле Rails. Его сделано так, как я сделал бы это в C++ Application. Все вручную. – Hoornet

1

На самом деле путь 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 

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

Успех!

Смежные вопросы