てhas_oneの/にhas_manyのSOURCE_TYPEオプションを、ドキュメントがを理解するのに役立つ必要があります:Railsの3.1でのRailsの
「4.2.2.13を言う:SOURCE_TYPE
:SOURCE_TYPEオプションはhas_oneのためのソースの関連付けタイプを指定します:多型関連を介して行われる関連付けを通じて "
私はちょうど:sourceの説明を読んでいますが、まだsource_typeが使用されていますか?
てhas_oneの/にhas_manyのSOURCE_TYPEオプションを、ドキュメントがを理解するのに役立つ必要があります:Railsの3.1でのRailsの
「4.2.2.13を言う:SOURCE_TYPE
:SOURCE_TYPEオプションはhas_oneのためのソースの関連付けタイプを指定します:多型関連を介して行われる関連付けを通じて "
私はちょうど:sourceの説明を読んでいますが、まだsource_typeが使用されていますか?
:source_type
は、多型である関連付けを扱う。あなたはこのような関係を持っている場合には、言うことです:
「私のタグでタグ付けされているブックのすべてを検索:
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
そして、ソースの種類は、あなたがこのようなクエリを行うことができますソースの種類がなければ「楽しい」」
tag = tag.find_by_name('Fun')
tag.books
という名前の、あなたがそれを行うことができないだろう、あなただけの 『楽しい』でタグ付けされたオブジェクトのコレクションを得ることができます。ソースのみを指定した場合は、オブジェクトの種類がわからないため、DB内のどのテーブルから取得するのかわからないでしょう。 source_type
は、取得しようとしているオブジェクトの種類を通知します。
これは、このブログの記事から取られる:http://www.brentmc79.com/posts/polymorphic-many-to-many-associations-in-rails
はそれがお役に立てば幸いです。
これは良い説明です。同じ方法でそれを説明しているdocrailsプロジェクトにパッチを提出できますか? http://github.com/lifo/docrails。 –
ありがとう!私はこれを長い間探してきました! –
あなたは、関係の中でどの種類のクラスを結合するのか分からないことを意味します。それは、 'taggings.map {| link | link.taggable} ' –