底线 - 我想将两个数据库表连接在一起,不“属于”彼此,但做有一个共同的字段。
经过对StackOverflow的一些研究后,我找到了一些解决类似问题的解决方案,这些问题直接使用SQL,如下所示:
Address.joins('INNER JOIN phones on addresses.person_id = phones.person_id').select("addresses.*, phones.*").limit(1)
但是,当我在rails控制台中使用上述语句时,它会执行以下SQL查询:
Address Load (0.3ms) SELECT addresses.*, phones.* FROM `addresses` INNER JOIN phones on addresses.person_id = phones.person_id LIMIT 1
并返回以下数据(因隐私原因而被审查):
=> #<ActiveRecord::Relation [#<Address id: 0001, created_at: "YYYY-MM-DD hh:mm:ss", updated_at: "YYYY-MM-DD hh:mm:ss", description: nil, line1: "123 Evergreen Terrace", line2: "", line3: "", city: "Springfield", state: "IL", country: "USA", zip: "11111", building_number: "001", person_id: 1, address_type: "Home", primary: false, show: nil, job_id: nil, room_number: "001", source: "HR", effective_date: "YYYY-MM-DD">]>
Phone表中没有一个字段成为最终记录。
我是否必须使这些不相关的表格“相互”以使它们起作用?喜欢 -
class Address < ActiveRecord::Base
belongs_to :person
end
class Phone < ActiveRecord::Base
belongs_to :person
belongs_to :address
end
或者我可以在不修改模特关系的情况下做我想做的事情吗?
答案 0 :(得分:3)
数据可能在查询中不可见,但记录将响应查询提取的那些字段,例如,如果电话记录具有number
属性,则调用{{ 1}}将使用提取的数字
.number