底線 - 我想將兩個數據庫表加在一起,即不是彼此「屬於」,但做有一個共同的字段。在軌道中加入無關表
在計算器上經過一番研究,我發現直接使用SQL,像這樣類似的問題的一些解決方案:
Address.joins('INNER JOIN phones on addresses.person_id = phones.person_id').select("addresses.*, phones.*").limit(1)
當我使用上面的語句在我的軌道控制檯,但是,它執行下列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">]>
手機表中沒有一個字段將其記錄到最終記錄中。
我必須讓這些不相關的表格「彼此屬於」才能使它們工作嗎?喜歡 -
class Address < ActiveRecord::Base
belongs_to :person
end
class Phone < ActiveRecord::Base
belongs_to :person
belongs_to :address
end
或者我可以做我想要的而不修改我的模型的關係嗎?
你到底在做什麼?你想查找與手機屬於同一個人的所有地址嗎?或者你是否在尋找單身人士的所有地址和電話號碼? –
我的目標是爲每個行中的一個人檢索包含地址和電話信息的表格。例如 知道如何做到這一點對於我想寫的另一個查詢也很有幫助,這涉及到從共享person_id的三個表中加入記錄。 –
NewbieOnRails
所以你想要多行,每行包含'person_id',地址屬性和電話屬性? –