2009-07-21 74 views
0

第一次海报 - 半新到Rails。这是我的问题。假设你有以下的多态多对许多协会的Rails:从ActiveRecord检索和排序多个阵列联接表 - Ruby on 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 

现在我的问题是让我们说我引用的Tagging数组回来,我需要采取taggable_id并返回所有书籍和电影作为新阵列。我将如何做到这一点?

如果这是令人困惑的,从更一般的意义上说,如何找到给定标签的所有电影和书籍?

我立即开始思考自定义SQL查找器是需要的,但我很好奇,如果我错过了一些“导轨魔术”。 :)

谢谢!!

回答

0

以下是查找给定标签的所有电影和书籍的最简单方法。

#Tag.rb 

def books_and_movies 
    books + movies 
end 

+运算符在Ruby中连接数组。

如果事实证明在实际中存在问题,请使用自定义SQL进行优化。我猜测它不会。