Changeset 4326
- Timestamp:
- 05/07/06 02:03:25 (2 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/activerecord/lib/active_record/associations/association_collection.rb
r4325 r4326 110 110 111 111 def uniq(collection = self) 112 collection.to_set.to_a 112 seen = Set.new 113 collection.inject([]) do |kept, record| 114 unless seen.include?(record.id) 115 kept << record 116 seen << record.id 117 end 118 kept 119 end 113 120 end 114 121 trunk/activerecord/test/associations_test.rb
r4237 r4326 1279 1279 new_project = Project.new("name" => "Grimetime") 1280 1280 amount_of_developers = 4 1281 developers = (0.. amount_of_developers).collect {|i| Developer.create(:name => "JME #{i}") }1282 1281 developers = (0...amount_of_developers).collect {|i| Developer.create(:name => "JME #{i}") }.reverse 1282 1283 1283 new_project.developer_ids = [developers[0].id, developers[1].id] 1284 1284 new_project.developers_with_callback_ids = [developers[2].id, developers[3].id] 1285 1285 assert new_project.save 1286 1286 1287 1287 new_project.reload 1288 1288 assert_equal amount_of_developers, new_project.developers.size 1289 amount_of_developers.times do |i| 1290 assert_equal developers[i].name, new_project.developers[i].name 1291 end 1289 assert_equal developers, new_project.developers 1290 end 1291 1292 def test_habtm_unique_order_preserved 1293 assert_equal [developers(:poor_jamis), developers(:jamis), developers(:david)], projects(:active_record).non_unique_developers 1294 assert_equal [developers(:poor_jamis), developers(:jamis), developers(:david)], projects(:active_record).developers 1292 1295 end 1293 1296 trunk/activerecord/test/fixtures/project.rb
r3287 r4326 1 1 class Project < ActiveRecord::Base 2 has_and_belongs_to_many :developers, :uniq => true 2 has_and_belongs_to_many :developers, :uniq => true, :order => 'developers.name desc, developers.id desc' 3 has_and_belongs_to_many :non_unique_developers, :order => 'developers.name desc, developers.id desc', :class_name => 'Developer' 3 4 has_and_belongs_to_many :limited_developers, :class_name => "Developer", :limit => 1 4 5 has_and_belongs_to_many :developers_named_david, :class_name => "Developer", :conditions => "name = 'David'", :uniq => true