作者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
1F:推 kewang:这样子写我知道可以,可是我想让user可以显示全部的栏位, 09/08 15:59
2F:→ kewang:因为我要to_json,照文中的写法会无法显示laptop.*,只会出 09/08 16:00
3F:→ kewang:现user.name, user.laptop_id而已 09/08 16:00