diff options
author | Tim Wade <imtayadeway@users.noreply.github.com> | 2019-04-03 10:05:20 -0700 |
---|---|---|
committer | Eileen M. Uchitelle <eileencodes@users.noreply.github.com> | 2019-04-03 13:05:20 -0400 |
commit | af56c5c1c6d6f96790b0b609af39d6df9dad6104 (patch) | |
tree | c3d85c2d38d407bc989b43ef47ce203522e1a40d /guides | |
parent | b1fc1319dfbc450451bb0b410113dd6b7ab1d412 (diff) | |
download | rails-af56c5c1c6d6f96790b0b609af39d6df9dad6104.tar.gz rails-af56c5c1c6d6f96790b0b609af39d6df9dad6104.tar.bz2 rails-af56c5c1c6d6f96790b0b609af39d6df9dad6104.zip |
[skip ci] Add examples for has_{one,many} :through :source and :source_type (#35612)
* Add example for has_many :through source/source_type
* Add example for has_one :through source/source_type
Diffstat (limited to 'guides')
-rw-r--r-- | guides/source/association_basics.md | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/guides/source/association_basics.md b/guides/source/association_basics.md index e076f10ece..10538eff0f 100644 --- a/guides/source/association_basics.md +++ b/guides/source/association_basics.md @@ -1305,6 +1305,21 @@ The `:source` option specifies the source association name for a `has_one :throu The `:source_type` option specifies the source association type for a `has_one :through` association that proceeds through a polymorphic association. +```ruby +class Book < ApplicationRecord + has_one :format, polymorphic: true + has_one :dust_jacket, through: :format, source: :dust_jacket, source_type: "Hardback" +end + +class Paperback < ApplicationRecord; end + +class Hardback < ApplicationRecord + has_one :dust_jacket +end + +class DustJacket < ApplicationRecord; end +``` + ##### `:through` The `:through` option specifies a join model through which to perform the query. `has_one :through` associations were discussed in detail [earlier in this guide](#the-has-one-through-association). @@ -1717,6 +1732,20 @@ The `:source` option specifies the source association name for a `has_many :thro The `:source_type` option specifies the source association type for a `has_many :through` association that proceeds through a polymorphic association. +```ruby +class Author < ApplicationRecord + has_many :books + has_many :paperbacks, through: :books, source: :format, source_type: "Paperback" +end + +class Book < ApplicationRecord + has_one :format, polymorphic: true +end + +class Hardback < ApplicationRecord; end +class Paperback < ApplicationRecord; end +``` + ##### `:through` The `:through` option specifies a join model through which to perform the query. `has_many :through` associations provide a way to implement many-to-many relationships, as discussed [earlier in this guide](#the-has-many-through-association). |