Извлечение и упорядочение нескольких массивов из таблицы ActiveRecord Join - Ruby on Rails - PullRequest
0 голосов
/ 21 июля 2009

первый постер - полу-новичок в Rails. Вот мой вопрос Предположим, у вас есть следующие полиморфные ассоциации многие-ко-многим в Rails:

   class Tag < ActiveRecord::Base  
      has_many :taggings, :dependent => :destroy  
      has_many :books, :through => :taggings, :source => :taggable, :source_type => "Book"  
      has_many :movies, :through => :taggings, :source => :taggable, :source_type => "Movie"  
   end

   class Tagging < ActiveRecord::Base  
     belongs_to :taggable, :polymorphic => true  
     belongs_to :tag  
   end

   class Book < ActiveRecord::Base  
     has_many :taggings, :as => :taggable  
     has_many :tags, :through => :taggings  
   end  

   class Movie < ActiveRecord::Base  
     has_many :taggings, :as => :taggable  
     has_many :tags, :through => :taggings  
   end 

Теперь мой вопрос, скажем, у меня есть возвращенный массив тегов, и мне нужно взять тег taggable_id и вернуть все книги и фильмы как новый массив. Как бы я это сделал?

Если это сбивает с толку, в более общем смысле, как мне найти все фильмы и книги для данного тега?

Я сразу начинаю думать, что нужны пользовательские средства поиска SQL, но мне любопытно, если я пропускаю некоторые из "магии Rails". :)

спасибо !!

1 Ответ

0 голосов
/ 21 июля 2009

Вот самый простой способ найти все фильмы и книги по заданному тегу.

#Tag.rb

def books_and_movies
  books + movies
end

Оператор + объединяет массивы в Ruby.

Оптимизируйте это с помощью пользовательского SQL, если на практике это оказывается проблематичным. Я предполагаю, что это не будет.

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