Rails 3.1 и выбор из трех таблиц - PullRequest
1 голос
/ 30 сентября 2011

У меня есть следующее, и я пытаюсь выяснить, как выбрать информацию о пользователе (sql в конце вопроса).

# only global_id and list_id
class GlobalList < ActiveRecord::Base
    set_table_name :globals_lists
    belongs_to :list
end

# user_id
class List < ActiveRecord::Base
    has_many :global_lists
    belongs_to :user
end

# email
class User < ActiveRecord::Base
  has_many :lists
end

Как бы я выбрал электронные письма из списка пользователей, если яglobal_id (т. е. предполагается, что global_id равен 256,

select u.* from users u, lists l, globals_lists gl where gl.global_id=256 and gl.list_id=l.id and l.user_id=u.id)

1 Ответ

1 голос
/ 30 сентября 2011

Попробуйте это:

User.includes({:lists => :global_lists}).where(['global_lists.global_id = ?', 256])

Это вернет User объектов, что, кажется, то, что вы ищете по вашему запросу. Затем вы можете получить их электронную почту из атрибута .email, в цикле, или по мере необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...