association_collection_tools 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README +13 -6
- data/lib/association_collection_tools.rb +9 -3
- metadata +4 -12
data/README
CHANGED
@@ -16,20 +16,21 @@ a. fast_copy
|
|
16
16
|
A method called fast_copy is added to has_and_belongs_to_many association
|
17
17
|
collections that makes the process of cloning HABTM associations *MUCH*
|
18
18
|
more efficient. Simply replace person1.items = person2.items with
|
19
|
-
person1.items.fast_copy(person2) and
|
19
|
+
person1.items.fast_copy(person2) and your database, network and RAM will
|
20
20
|
thank you. See below for more details.
|
21
21
|
|
22
|
-
b.
|
22
|
+
b. fast_add
|
23
|
+
fast_add operates just like fast_copy, but instead of replacing the existing
|
24
|
+
objects in the association, it appends new objects to the association.
|
25
|
+
|
26
|
+
c. ids
|
23
27
|
A method called ids is added to has_many and has_and_belongs_to_many
|
24
28
|
association collections. It returns the list of object ids in the association
|
25
29
|
collection without unnecessarily instantiating the objects.
|
26
30
|
|
27
31
|
== Installation
|
28
32
|
|
29
|
-
1.
|
30
|
-
# gem install association_collection_tools
|
31
|
-
|
32
|
-
2. Install the plugin OR the gem
|
33
|
+
1. Install the plugin OR the gem
|
33
34
|
$ script/plugin install svn://rubyforge.org/var/svn/zventstools/projects/association_collection_tools
|
34
35
|
- OR -
|
35
36
|
# gem install association_collection_tools
|
@@ -103,6 +104,12 @@ actually already exists and I'm just blind, but from the looks of
|
|
103
104
|
http://dev.rubyonrails.org/ticket/2917, it appears that it is a
|
104
105
|
documentation bug.
|
105
106
|
|
107
|
+
== HABTM Fast Add
|
108
|
+
fast_add operates just like fast_copy, but instead of replacing the existing
|
109
|
+
objects in the association, it appends new objects to the association.
|
110
|
+
|
111
|
+
person1.items.fast_add([1,2], {:user_id => user_id})
|
112
|
+
|
106
113
|
== HABTM and has_many ids
|
107
114
|
Return the list of IDs in this association collection without unnecessarily
|
108
115
|
instantiating a bunch of Active Record objects. What good is the id of
|
@@ -73,7 +73,13 @@ module ActiveRecord
|
|
73
73
|
def fast_copy(other_object,attributes = {})
|
74
74
|
self.fast_clear
|
75
75
|
other_object_assocation_ids = other_object.send(@reflection.name).ids
|
76
|
-
|
76
|
+
self.fast_add(other_object_assocation_ids, attributes)
|
77
|
+
end
|
78
|
+
|
79
|
+
# fast_add allows you to quickly add objects identified by an array
|
80
|
+
# of ids to a HABTM association.
|
81
|
+
def fast_add(ids,attributes = {})
|
82
|
+
return [] if ids.empty?
|
77
83
|
|
78
84
|
column_names = [ @reflection.primary_key_name,
|
79
85
|
@reflection.association_foreign_key ]
|
@@ -83,8 +89,8 @@ module ActiveRecord
|
|
83
89
|
attribute_values << attributes[k]
|
84
90
|
}
|
85
91
|
|
86
|
-
@owner.connection.execute("REPLACE INTO #{@reflection.options[:join_table]} (#{column_names.join(",")}) VALUES #{
|
87
|
-
return
|
92
|
+
@owner.connection.execute("REPLACE INTO #{@reflection.options[:join_table]} (#{column_names.join(",")}) VALUES #{ids.map{|aid| "(#{@owner.quoted_id},#{aid}#{attributes.empty? ? "" : ("," + attribute_values.join(','))})"}.join(",")}")
|
93
|
+
return ids
|
88
94
|
end
|
89
95
|
|
90
96
|
# Return the list of IDs in this association collection without
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.10
|
|
3
3
|
specification_version: 1
|
4
4
|
name: association_collection_tools
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0.
|
7
|
-
date: 2006-11-
|
6
|
+
version: 0.0.2
|
7
|
+
date: 2006-11-03
|
8
8
|
summary: Adds fast_copy method to has_and_belongs_to_many associations cloning associations much faster than the assignment operator. Adds ids methods to has_many and has_and_belongs_to_many associations for retrieving object ids without instantiating ActiveRecord objects.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -40,13 +40,5 @@ extensions: []
|
|
40
40
|
|
41
41
|
requirements: []
|
42
42
|
|
43
|
-
dependencies:
|
44
|
-
|
45
|
-
name: memcache-client
|
46
|
-
version_requirement:
|
47
|
-
version_requirements: !ruby/object:Gem::Version::Requirement
|
48
|
-
requirements:
|
49
|
-
- - ">="
|
50
|
-
- !ruby/object:Gem::Version
|
51
|
-
version: 1.0.3
|
52
|
-
version:
|
43
|
+
dependencies: []
|
44
|
+
|