所以我继承了一个使用SQL Server的数据库和.NET项目。我们需要通过Rails连接它。
问题是数据库设计得不是很好,而且关系不存在(外键等)
有没有办法通过没有ID字段或明确关系的模型来关联表?"以这些表格为例:
UPDATE Equipo c SET c.horasmotor= (CAST(c.horasmotor AS INT) -" + historial.getHorasTrabajadas() + ") WHERE c.id=" + expediente.getId()
在给我的规格中,我需要用相应的午餐拉出所有托盘。 Item_Key"出现"成为一种关系"到午餐桌(可能会或可能不会)。但是,我被告知Item_Key也可以容纳一个Food项目。
正如您所看到的,没有"明确"指示Item_Key包含的内容(Lunches表中没有类型字段)。但是,我希望能够使用Rails的模型结构来处理这个问题。
顺便说一句,我无法以任何方式更新表以容纳Rails。
这甚至可能吗?
答案 0 :(得分:1)
您可以配置关联以使用不同的密钥。听起来你可能能够定义两个关联:一个假设Item_Key
指向Lunches.Lunch_Key
,一个假设Item_Key
指向Foods.Food_Key
。然后,您可以使用一种方法来确定要遵循的关联(如果您不知道Item_Key
将唯一地指向午餐或食物,您需要决定优先级。
class Tray < ActiveRecord::Base
has_one :food, foreign_key: 'Item_Key', primary_key: 'Food_Key'
has_one :lunch, foreign_key: 'Item_Key', primary_key: 'Lunch_Key'
def content_name
if self.food.present?
self.food.Food_Name
elsif self.lunch.present?
self.lunch.Lunch_Name
else
nil
end
end
您始终可以在name
和Lunch
课程中提供Food
方法,这可能会使事情变得更轻松。
P.S。我并没有假装你没有进入一个痛苦的世界,试图获得与ActiveRecord
合作的模式。