i have 3 models like :
location, user, discovered_location(location_id,user_id)
我认为我需要一个外连接来获取所有位置,并包括已被用户发现的discovered_location模型。
我需要类似这样的东西:{location1, location2, location3: 包含 discovered_location, location4 ...}
有没有Rails 3的方法可以做到这一点?如果没有,什么是最好的方法?
编辑
我想要获取上述指定的位置,针对某个用户。更好地说明一下,它应该是:
用户{location1、location2、location3: 包括发现的位置,location4...}
(一个用户有很多发现的位置)
includes
方法并对一个已包含的表格使用条件,AR将执行外连接。 - Dave Pirotteboss_locations
.,discovered_locations
. FROMboss_locations
LEFT OUTER JOIN discovered_locations ON discovered_locations.boss_location_id = boss_locations.id; - Spyroswhere("user_id = ? OR user_id IS NULL", @user_id)
来限制特定用户。这对你可能有效,但不如使用 Ruby 那么干净。此外,像这样使用 SQL 可能会在意想不到的情况下给你带来麻烦...所以最好不要走这条路,除非你必须这样做(而你并不必须这样做)。如果你看一下我的答案,用你要查找的用户 ID 替换掉User.first.id
,你就可以开始了。 - Dave Pirotte