mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #12918 from versioncontrol/rails-12866
Checks to see if the record contains the foreign_key to set the inverse automatically Conflicts: activerecord/CHANGELOG.md
This commit is contained in:
commit
c069e0fa34
3 changed files with 14 additions and 1 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
* Checks to see if the record contains the foreign key to set the inverse automatically.
|
||||||
|
|
||||||
|
*Edo Balvers*
|
||||||
|
|
||||||
* Exit with non-zero status for failed database rake tasks.
|
* Exit with non-zero status for failed database rake tasks.
|
||||||
|
|
||||||
*Jay Hayes*
|
*Jay Hayes*
|
||||||
|
|
|
@ -226,7 +226,12 @@ module ActiveRecord
|
||||||
# Returns true if inverse association on the given record needs to be set.
|
# Returns true if inverse association on the given record needs to be set.
|
||||||
# This method is redefined by subclasses.
|
# This method is redefined by subclasses.
|
||||||
def invertible_for?(record)
|
def invertible_for?(record)
|
||||||
inverse_reflection_for(record)
|
foreign_key_for?(record) && inverse_reflection_for(record)
|
||||||
|
end
|
||||||
|
|
||||||
|
# Returns true if record contains the foreign_key
|
||||||
|
def foreign_key_for?(record)
|
||||||
|
record.attributes.has_key? reflection.foreign_key
|
||||||
end
|
end
|
||||||
|
|
||||||
# This should be implemented to return the values of the relevant key(s) on the owner,
|
# This should be implemented to return the values of the relevant key(s) on the owner,
|
||||||
|
|
|
@ -460,6 +460,10 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
|
||||||
assert_equal ['id'], posts(:welcome).comments.select(:id).first.attributes.keys
|
assert_equal ['id'], posts(:welcome).comments.select(:id).first.attributes.keys
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_select_without_foreign_key
|
||||||
|
assert_equal companies(:first_firm).accounts.first.credit_limit, companies(:first_firm).accounts.select(:credit_limit).first.credit_limit
|
||||||
|
end
|
||||||
|
|
||||||
def test_adding
|
def test_adding
|
||||||
force_signal37_to_load_all_clients_of_firm
|
force_signal37_to_load_all_clients_of_firm
|
||||||
natural = Client.new("name" => "Natural Company")
|
natural = Client.new("name" => "Natural Company")
|
||||||
|
|
Loading…
Reference in a new issue