Skip to content

Commit

Permalink
updating options documentation for associations
Browse files Browse the repository at this point in the history
removed unnecessary test case and improved test case for belongs_to having invalid  options
  • Loading branch information
kuldeepaggarwal committed Nov 29, 2013
1 parent 948c0ff commit 647cff3
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 9 deletions.
Expand Up @@ -619,16 +619,11 @@ def test_dependent_delete_and_destroy_with_belongs_to
assert_equal [author_address.id], AuthorAddress.destroyed_author_address_ids
end

def test_invalid_belongs_to_dependent_option_nullify_raises_exception
assert_raise ArgumentError do
def test_belongs_to_invalid_dependent_option_raises_exception
error = assert_raise ArgumentError do
Class.new(Author).belongs_to :special_author_address, :dependent => :nullify
end
end

def test_invalid_belongs_to_dependent_option_restrict_raises_exception
assert_raise ArgumentError do
Class.new(Author).belongs_to :special_author_address, :dependent => :restrict
end
assert_equal error.message, 'The :dependent option must be one of [:destroy, :delete], but is :nullify'
end

def test_attributes_are_being_set_when_initialized_from_belongs_to_association_with_where_clause
Expand Down
6 changes: 5 additions & 1 deletion guides/source/association_basics.md
Expand Up @@ -864,8 +864,12 @@ end
Counter cache columns are added to the containing model's list of read-only attributes through `attr_readonly`.

##### `:dependent`
If you set the `:dependent` option to:

If you set the `:dependent` option to `:destroy`, then deleting this object will call the `destroy` method on the associated object to delete that object. If you set the `:dependent` option to `:delete`, then deleting this object will delete the associated object _without_ calling its `destroy` method. If you set the `:dependent` option to `:restrict`, then attempting to delete this object will result in a `ActiveRecord::DeleteRestrictionError` if there are any associated objects.
* `:destroy`, when the object is destroyed, `destroy` will be called on its
associated objects.
* `:delete`, when the object is destroyed, all its associated objects will be
deleted directly from the database without calling their `destroy` method.

WARNING: You should not specify this option on a `belongs_to` association that is connected with a `has_many` association on the other class. Doing so can lead to orphaned records in your database.

Expand Down

0 comments on commit 647cff3

Please sign in to comment.