Запрос отношения многих ко многим в Ruby on Rails - PullRequest
0 голосов
/ 09 января 2011

Допустим, у меня есть приложение, где пользователи могут оценивать книги. Таблицы - это пользователи (id), книги (id) и рейтинг (user_id, book_id, value). Я сделал эти модели

class Rating < ActiveRecord::Base
  belongs_to :user
  belongs_to :book
end

class User < ActiveRecord::Base
  has_many :ratings
end

class Book < ActiveRecord::Base
  has_many :ratings
end

Я хочу получить список всех (как оцененных, так и не оцененных) книг с их оценками, сделанными текущим пользователем. Это легко в SQL с внешним объединением, но я не могу найти способ сделать это в Rails 3.

Ответы [ 2 ]

1 голос
/ 09 января 2011

Согласно LEFT OUTER объединениям в Rails 3 вам нужно будет указать внешнее объединение в SQL ...

0 голосов
/ 09 января 2011

это довольно просто и в рельсах. Вы, вероятно, должны также добавить в пользователя отношения с книгами.

class User < ActiveRecord::Base
  has_many :ratings
  has_many :users, :through => :ratings
end

current_user.books.includes(:ratings).all

должно работать.

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