0

我是 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,
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

这些 SQL 是每天的工作时间,我按原样得到它们。我也得到了数据库,它(从 SQL-s 中可以看出)不在 Rails 约定中。作为 PS:

  1. 像 STP_DATE>={d'2010-03-30'}) 这样的东西当然是日期(斯洛文尼亚日期表示法),将被替换为变量(日期),以便用户可以选择日期和日期。

  2. 所有这些数据都将显示在表格的同一页面中,所以也许都在一个模块中?还是很多?如果这有帮助,也许。

那么有人可以帮助我吗?它是为了我的工作和我的第一个项目,我是 Rails 新手,老板们正在耐心等待(实际上他们变得非常响亮)

非常非常感谢你!

因此,如果有人可以为至少一个复杂的 SQL 做一个相关的模型部分,我真的很感激。我将在一个控制器和一个动作中读取所有数据。一切都将在一次运行中完成。

4

3 回答 3

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  

类似的东西。不知道你的模型和你的表名到底是什么意思:) 但我希望它能让你开始。

成功!!

于 2010-05-19T11:59:20.200 回答
0

这不是真正要求人们“为我做我的工作”的地方,还有其他网站,例如rent-a-coder,您可以在其中做到这一点。

然而,这是一个寻求帮助的地方,我可以给你一些指示。

您应该做的第一件事是开始弄清楚您的模型是什么。您可以尝试使用Dr Nis 魔术模型自动生成模型,但我预计数据库不遵循 ActiveRecord 约定这一事实可能对您来说是个问题。

过去,我通过将表和列重命名为 Rails 约定并提供反映当前命名约定供现有遗留应用程序使用的视图,在遗留数据库方面取得了一些成功。如果你能做到这一点,那么你的生活会更轻松,因为你可以使用像 Magic Models 或Ryan Bates 漂亮的脚手架这样的生成器来为你提供一个基本结构,然后开始工作。

希望这对您的项目有所帮助并祝您好运。

于 2010-05-18T09:15:41.770 回答
0

为数据库中的这些 sql 创建视图,并为每个视图创建一个模型。

于 2010-05-18T09:09:45.430 回答