diff options
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/associations.rb | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/associations.rb b/activerecord/lib/active_record/associations.rb index 4ec1c8d545..18d4291599 100644 --- a/activerecord/lib/active_record/associations.rb +++ b/activerecord/lib/active_record/associations.rb @@ -1146,6 +1146,20 @@ module ActiveRecord # has_many :employees, -> { joins(:address) } # has_many :posts, ->(post) { where("max_post_length > ?", post.length) } # + # === Extensions + # + # The +extension+ argument allows you to pass a block into a has_many + # association. This is useful for adding new finders, creators and other + # factory-type methods to be used as part of the association. + # + # Extension examples: + # has_many :employees do + # def find_or_create_by_name(name) + # first_name, last_name = name.split(" ", 2) + # find_or_create_by(first_name: first_name, last_name: last_name) + # end + # end + # # === Options # [:class_name] # Specify the class name of the association. Use it only if that name can't be inferred @@ -1277,7 +1291,7 @@ module ActiveRecord # when you access the associated object. # # Scope examples: - # has_one :auther, -> { where(comment_id: 1) } + # has_one :author, -> { where(comment_id: 1) } # has_one :employer, -> { joins(:company) } # has_one :dob, ->(dob) { where("Date.new(2000, 01, 01) > ?", dob) } # |