У меня есть следующие модели:Rails mysql: Как запрашивать таблицы с глубоко вложенными отношениями (has_many и belongs_to)?
class User < ActiveRecord::Base
has_many :keys
end
class Key < ActiveRecord::Base
belongs_to :room
end
class Room < ActiveRecord::Base
belongs_to :building
end
class Building < ActiveRecord::Base
#Has column "name"
end
Я хочу, чтобы все пользователи, имеющие ключи, принадлежащие к зданию с названием «HQ»
Bassicaly что-то вроде этого (псевдо запроса):
Users = users.where('keys.room.building.name=?', name)
Это дальше я получил:
users = User.joins(:keys).where('keys.room.building.name=?', name)
Bu т дает следующее сообщение об ошибке:
ActionView::Template::Error (Mysql2::Error: You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near '.name='HQ')' at line 1:
SELECT `users`.* FROM `users` INNER JOIN `keys` ON `keys`.`user_id` = `users`.`id` WHERE (keys.room.building.name='HQ')):
Привет, в чем разница между «User.joins (: keys => {: room => {: building}})» и аннонсом lusketeer: «User.joins (keys: [room:: building])»? – MeesterPatat
@MeesterPatat взгляните на эту статью [включает vs joins] (http://blog.bigbinary.com/2013/07/01/preload-vs-eager-load-vs-joins-vs-includes.html) – lusketeer
Я имел в виду, какова разница между использованием фигурных скобок и квадратных скобок. – MeesterPatat