作者ggegge (Egg)
看板Ruby
標題Re: [問題] includes or joins???
時間Thu Sep 8 15:29:53 2011
※ 引述《kewang (617公車)》之銘言:
: 環境:
: Ruby 1.9.2, Rails 3.1.0
: 狀況:
: Migration:
: User(name, laptop_id)
: Laptop(serial, color, lcd_size)
: Model:
: User Model => belongs_to :laptop
: Laptop Model => has_many :users
: 現在有一個困擾我兩天的問題,我想要用下面的方式將User及對應的Laptop
: 都抓出來(user.name, laptop.serial, laptop.color, laptop.lcd_size),
: 但是無論我如何試都是一樣只會出現User或是Laptop其中一種。不知道大家是
: 如何解決這個問題的呢?
: User.joins(:laptop).select("users.*, laptops.*")
: User.includes(:laptop).select("users.*, laptops.*")
: 在stackoverflow上面找了一堆文章,全部都試過了,沒有一個是可以用的 囧rz
用法應該像是
user = User.includes(:laptop).first
user.laptop.color # for example
這樣在第一次 query 的時候 ActiveRecord 就會做 join 的動作
所以總共只有一次 query
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.133
推 kewang:這樣子寫我知道可以,可是我想讓user可以顯示全部的欄位, 09/08 15:59
→ kewang:因為我要to_json,照文中的寫法會無法顯示laptop.*,只會出 09/08 16:00
→ kewang:現user.name, user.laptop_id而已 09/08 16:00