不同但关联的表中的字段可以具有相同的名称是 Rails 4
Can fields in different but associated tables have the same name is Rails 4
不同但关联的表中的字段可以具有相同的名称是 Rails 4 并且是不同的。例如,如果我有一个 class Shipping 和一个 class Receiving,其中每个都有字段 EnterTrackingNo,并且它们通过字段 shipping_id 上的一对一关联关联,是否会有此设置有任何问题/字段以某种方式重叠/相互干扰吗?
谢谢
不会有任何问题,因为 Rails 会在需要时自动将 table 名称添加到它构建的 SQL 查询中。您将能够轻松访问该属性,因为 shipping.EnterTrackingNo
、receiving.EnterTrackingNo
、shipping.receiving.EnterTrackingNo
、receiving.shipping.EnterTrackingNo
等,并且 Rails 知道哪个 table 你说的是因为它们的书写方式。
即使当您搜索一个对象时,假设您想要搜索具有 EnterTrackingNo == 3
的接收项目的所有运输
Shipping.includes(:receiving).where(receiving: { EnterTrackingNo: 3 })
唯一要记住的是,如果您使用 SQL 片段(例如将 where 写成字符串),您必须将其写成 table_name.attribute,否则您会得到一个SQLException: ambiguous column name
。例如:
Shipping.includes(:receiving).where("EnterTrackingNo = 3").references(:receivings)
不会像 Rails 那样工作,并且您的数据库无法知道您在谈论哪个 EnterTrackingNo。您必须将其写为:
Shipping.includes(:receiving).where("receivings.EnterTrackingNo = 3").references(:receivings)
所以他们知道您想要 Receiving
模型的属性。
您还会注意到我将 references(:table_name)
添加到具有 SQL 片段的片段中。这也是必要的,因为 Rails 当你只给它一个字符串时不能告诉它需要一个连接。
不同但关联的表中的字段可以具有相同的名称是 Rails 4 并且是不同的。例如,如果我有一个 class Shipping 和一个 class Receiving,其中每个都有字段 EnterTrackingNo,并且它们通过字段 shipping_id 上的一对一关联关联,是否会有此设置有任何问题/字段以某种方式重叠/相互干扰吗?
谢谢
不会有任何问题,因为 Rails 会在需要时自动将 table 名称添加到它构建的 SQL 查询中。您将能够轻松访问该属性,因为 shipping.EnterTrackingNo
、receiving.EnterTrackingNo
、shipping.receiving.EnterTrackingNo
、receiving.shipping.EnterTrackingNo
等,并且 Rails 知道哪个 table 你说的是因为它们的书写方式。
即使当您搜索一个对象时,假设您想要搜索具有 EnterTrackingNo == 3
的接收项目的所有运输
Shipping.includes(:receiving).where(receiving: { EnterTrackingNo: 3 })
唯一要记住的是,如果您使用 SQL 片段(例如将 where 写成字符串),您必须将其写成 table_name.attribute,否则您会得到一个SQLException: ambiguous column name
。例如:
Shipping.includes(:receiving).where("EnterTrackingNo = 3").references(:receivings)
不会像 Rails 那样工作,并且您的数据库无法知道您在谈论哪个 EnterTrackingNo。您必须将其写为:
Shipping.includes(:receiving).where("receivings.EnterTrackingNo = 3").references(:receivings)
所以他们知道您想要 Receiving
模型的属性。
您还会注意到我将 references(:table_name)
添加到具有 SQL 片段的片段中。这也是必要的,因为 Rails 当你只给它一个字符串时不能告诉它需要一个连接。