aboutsummaryrefslogtreecommitdiffstats
path: root/guides
diff options
context:
space:
mode:
authorTim Wade <imtayadeway@users.noreply.github.com>2019-04-03 10:05:20 -0700
committerEileen M. Uchitelle <eileencodes@users.noreply.github.com>2019-04-03 13:05:20 -0400
commitaf56c5c1c6d6f96790b0b609af39d6df9dad6104 (patch)
treec3d85c2d38d407bc989b43ef47ce203522e1a40d /guides
parentb1fc1319dfbc450451bb0b410113dd6b7ab1d412 (diff)
downloadrails-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.md29
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).