mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Add :readonly option to HasManyThrough associations. Closes #11156 [miloops]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8989 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
8a351648ab
commit
e117350037
4 changed files with 13 additions and 2 deletions
|
@ -1,5 +1,7 @@
|
||||||
*SVN*
|
*SVN*
|
||||||
|
|
||||||
|
* Add :readonly option to HasManyThrough associations. #11156 [miloops]
|
||||||
|
|
||||||
* Improve performance on :include/:conditions/:limit queries by selectively joining in the pre-query. #9560 [dasil003]
|
* Improve performance on :include/:conditions/:limit queries by selectively joining in the pre-query. #9560 [dasil003]
|
||||||
|
|
||||||
* Perf fix: Avoid the use of named block arguments. Closes #11109 [adymo]
|
* Perf fix: Avoid the use of named block arguments. Closes #11109 [adymo]
|
||||||
|
|
|
@ -159,6 +159,7 @@ module ActiveRecord
|
||||||
:order => @reflection.options[:order],
|
:order => @reflection.options[:order],
|
||||||
:limit => @reflection.options[:limit],
|
:limit => @reflection.options[:limit],
|
||||||
:group => @reflection.options[:group],
|
:group => @reflection.options[:group],
|
||||||
|
:readonly => @reflection.options[:readonly],
|
||||||
:include => @reflection.options[:include] || @reflection.source_reflection.options[:include]
|
:include => @reflection.options[:include] || @reflection.source_reflection.options[:include]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -253,7 +254,9 @@ module ActiveRecord
|
||||||
:include => @reflection.options[:include],
|
:include => @reflection.options[:include],
|
||||||
:select => construct_select,
|
:select => construct_select,
|
||||||
:order => @reflection.options[:order],
|
:order => @reflection.options[:order],
|
||||||
:limit => @reflection.options[:limit] } }
|
:limit => @reflection.options[:limit],
|
||||||
|
:readonly => @reflection.options[:readonly],
|
||||||
|
} }
|
||||||
end
|
end
|
||||||
|
|
||||||
def construct_sql
|
def construct_sql
|
||||||
|
|
|
@ -554,6 +554,11 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
|
||||||
companies(:first_firm).readonly_clients.find(:all).each { |c| assert c.readonly? }
|
companies(:first_firm).readonly_clients.find(:all).each { |c| assert c.readonly? }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_cant_save_has_many_readonly_association
|
||||||
|
authors(:david).readonly_comments.each { |c| assert_raise(ActiveRecord::ReadOnlyRecord) { c.save! } }
|
||||||
|
authors(:david).readonly_comments.each { |c| assert c.readonly? }
|
||||||
|
end
|
||||||
|
|
||||||
def test_triple_equality
|
def test_triple_equality
|
||||||
assert !(Array === Firm.find(:first).clients)
|
assert !(Array === Firm.find(:first).clients)
|
||||||
assert Firm.find(:first).clients === Array
|
assert Firm.find(:first).clients === Array
|
||||||
|
|
|
@ -20,6 +20,7 @@ class Author < ActiveRecord::Base
|
||||||
has_many :funky_comments, :through => :posts, :source => :comments
|
has_many :funky_comments, :through => :posts, :source => :comments
|
||||||
has_many :ordered_uniq_comments, :through => :posts, :source => :comments, :uniq => true, :order => 'comments.id'
|
has_many :ordered_uniq_comments, :through => :posts, :source => :comments, :uniq => true, :order => 'comments.id'
|
||||||
has_many :ordered_uniq_comments_desc, :through => :posts, :source => :comments, :uniq => true, :order => 'comments.id DESC'
|
has_many :ordered_uniq_comments_desc, :through => :posts, :source => :comments, :uniq => true, :order => 'comments.id DESC'
|
||||||
|
has_many :readonly_comments, :through => :posts, :source => :comments, :readonly => true
|
||||||
|
|
||||||
has_many :special_posts
|
has_many :special_posts
|
||||||
has_many :special_post_comments, :through => :special_posts, :source => :comments
|
has_many :special_post_comments, :through => :special_posts, :source => :comments
|
||||||
|
|
Loading…
Reference in a new issue