Рельсы named_scope с has_and_belongs_to_many - PullRequest
2 голосов
/ 28 марта 2009

У меня есть 3 таблицы - фильмы, films_genres (для подключения 2 таблицы) и жанры. В модельном фильме.rb - has_and_belongs_to_many: жанры В Model genre.rb - has_and_belongs_to_many: фильмы

Итак, как я могу написать этот SQL-код:

ВЫБРАТЬ * ИЗ genres ВНУТРЕННЕЕ СОЕДИНЕНИЕ films_genres ВКЛ genres .id = films_genres .genre_id ГДЕ (films_genres .film_id = 1)

с named_scope в Model film.rb для показа всех жанров кинопроката?

Ответы [ 3 ]

7 голосов
/ 29 марта 2009
class Model < ActiveRecord::Base
  named_scope :by_genre, lambda { |*genres|
    {
      :include => :genres,
      :conditions => [ "genres.id IN (?)", genres.map(&:id) ]
    }
  }
end

Film.by_genre(western, sci_fi).find(:all)

Я сделал это немного более сложным, чтобы указать несколько жанров как часть вашей именованной области. Надеюсь, это поможет.

0 голосов
/ 29 марта 2009

глава! Я пытаюсь объединиться из списка жанров, связанных с фильмом. И мой вопрос: как я могу сделать это, используя named_scome в film.rb Model? Мне это нужно для фильтра фильмов. Ссылка например: http://clearcove.ca/blog/2008/12/recipe-restful-search-for-rails/#more-218

Базы данных:

фильмы: Я бы название DESCR год

films_genres: Я бы film_id genre_id

жанры: Я бы Имя

0 голосов
/ 29 марта 2009

На английском, что вы пытаетесь вытащить из БД? Чтобы найти жанры для определенного фильма, просто выполните:

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