0

我有两张桌子。
1.“SharedInfo”有4个属性:id、info_name、description、type_id
2.“Type”有3个属性:id、type_name、code

关系是:“SharedInfo”belongs_to“Type”,“Type”has_many“SharedInfo”。外键是:type_id。

我想加入 2 个表并选择 info_name、description、type_id、type_name、code
如何在 RoR 应用程序(控制器)中执行

我更具体地编辑我的问题:

在控制器中,我想检索一个实例@instance,它具有表“SharedInfo”的所有属性和基于“type_id”属性的表“Type”的属性“code”。(@instance 有 'id'、'info_name'、'description'、'type_id'、'code' 属性)

4

3 回答 3

0

您可以使用.joins() Try this 假设,id = 1例如:

select("si.info_name, si.description, si.type_id, t.type_name, t.code")
.from("SharedInfo AS si ON t.type_id = si.type_id")
.joins("Type AS t ON si.type_id = t.type_id")
.where("si.id = 1")
于 2013-04-22T10:32:34.917 回答
0

因此,您可以使用它Active Record Associations来执行此操作。 SharedInfo has_many TypeType belongs_to SharedInfo。使用它,您可以对两个表进行连接查询。

至于您稍后将其转换为 json 并在视图中显示的部分,您可以将 Active Record 对象呈现为 json 并使用它。

在此处阅读有关 Active Record 关联的更多信息。您还可以参考此SO 答案以获取示例。

希望这可以帮助

于 2013-04-23T10:01:05.730 回答
0

没关系,我解决了我的问题:通过使用这个:

@locations = SharedInfo.select("shared_infos.info_name, shared_infos.description, shared_infos.type_id, types.type_name, types.code").joins("LEFT OUTER JOIN types ON types.id = shared_infos.type_id")

希望对像我一样有问题的人有所帮助。
感谢大家的帮助。

于 2013-04-23T10:16:18.997 回答