我正在爲我的數據庫表開發一個使用ActiveRecord模型的rails 4應用程序。 主要問題是我的模型非常複雜,當我做主對象的索引時,我想顯示大量信息。如何將ActiveRecord SQL查詢轉換爲散列數組而無需實例化ActiveRecord對象?
例如,假設我有以下表和列:
Person: name(string)
Address: address(string), person_id(int)
EmailAddress: email(string), person_id(int)
Email: spam (boolean), email_address_id(int)
和關係:
person has_many: :email_addresses
person has_one: :address
email_address has_many: :emails
現在我想顯示如下信息
person.name
person.address.name
person.email_addresses.count
person.email_addresses.map do |email_address|
email_address.email.where(spam: false).count
end
主要問題是我有大量的記錄,我不想實例化所有的記錄(因爲這個,我有一些內存問題)。因此,我想知道如何直接做這種事情來獲得散列或數組的數組。
我設法使用pluck
開頭:
Person.joins(:address).pluck('persons.name, addresses.address')
問題與計數部分開始。
有人遇到過這種情況嗎?有沒有辦法做到這一點,而無需編寫完整的SQL查詢?
什麼是你使用的數據庫? – 2015-02-24 16:12:51
嗨。 我有一個postgres數據庫。 – 2015-02-24 18:40:40