acts-as-joinable 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/lib/acts_as_joinable/active_record_patch.rb +0 -5
- data/lib/acts_as_joinable/core.rb +20 -1
- metadata +4 -4
data/Rakefile
CHANGED
@@ -5,7 +5,7 @@ require 'rake/gempackagetask'
|
|
5
5
|
spec = Gem::Specification.new do |s|
|
6
6
|
s.name = "acts-as-joinable"
|
7
7
|
s.authors = ["Lance Pollard"]
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.5"
|
9
9
|
s.summary = "ActsAsJoinable: DRYing up Many-to-Many Relationships in ActiveRecord"
|
10
10
|
s.homepage = "http://github.com/viatropos/acts-as-joinable"
|
11
11
|
s.email = "lancejpollard@gmail.com"
|
@@ -79,7 +79,6 @@ module ActiveRecord
|
|
79
79
|
|
80
80
|
# Construct attributes for associate pointing to owner.
|
81
81
|
def construct_owner_attributes(reflection)
|
82
|
-
puts "construct_owner_attributes #{@owner.class.name}"
|
83
82
|
if as = reflection.options[:as]
|
84
83
|
{ "#{as}_id" => @owner.id,
|
85
84
|
"#{as}_type" => @owner.class.name.to_s }
|
@@ -121,7 +120,6 @@ module ActiveRecord
|
|
121
120
|
reflection_primary_key = @reflection.klass.primary_key
|
122
121
|
source_primary_key = @reflection.source_reflection.primary_key_name
|
123
122
|
if @reflection.options[:source_type]
|
124
|
-
puts "@reflection.options[:source_type]"
|
125
123
|
polymorphic_join = construct_polymorphic_sql(
|
126
124
|
@reflection.through_reflection.quoted_table_name,
|
127
125
|
"#{@reflection.source_reflection.options[:foreign_type]}",
|
@@ -149,8 +147,6 @@ module ActiveRecord
|
|
149
147
|
polymorphic_join
|
150
148
|
]
|
151
149
|
|
152
|
-
puts "RESULT #{result}"
|
153
|
-
|
154
150
|
result
|
155
151
|
end
|
156
152
|
end
|
@@ -181,7 +177,6 @@ module ActiveRecord
|
|
181
177
|
@finder_sql << " AND (#{polymorphic_conditions})"
|
182
178
|
@finder_sql << " AND (#{conditions})" if conditions
|
183
179
|
else
|
184
|
-
puts "PRIMARY #{@reflection.quoted_table_name}.#{@reflection.primary_key_name}"
|
185
180
|
@finder_sql = "#{@reflection.quoted_table_name}.#{@reflection.primary_key_name} = #{owner_quoted_id}"
|
186
181
|
@finder_sql << " AND (#{conditions})" if conditions
|
187
182
|
end
|
@@ -178,7 +178,7 @@ module ActsAsJoinable
|
|
178
178
|
send(plural_type).last
|
179
179
|
end
|
180
180
|
define_method "#{singular_type}=" do |value|
|
181
|
-
send(relationship_with_context).delete_all
|
181
|
+
#send(relationship_with_context).delete_all
|
182
182
|
send(plural_type) << value
|
183
183
|
end
|
184
184
|
define_method "#{singular_type}_id" do
|
@@ -223,6 +223,25 @@ module ActsAsJoinable
|
|
223
223
|
conditions = %Q|(`relationships`.parent_type IN ("#{self.class.name}","#{self.class.base_class.name}") AND `relationships`.parent_id = #{self.id}) OR (`relationships`.child_type IN ("#{self.class.name}","#{self.class.base_class.name}") AND `relationships`.child_id = #{self.id})|
|
224
224
|
ActsAsJoinable::Relationship.delete_all(conditions)
|
225
225
|
end
|
226
|
+
|
227
|
+
def relationship_matches?(relationship, conditions)
|
228
|
+
return false if conditions[:parent_type] && !Array(conditions[:parent_type]).include?(relationship.parent_type)
|
229
|
+
return false if conditions[:child_type] && !Array(conditions[:child_type]).include?(relationship.child_type)
|
230
|
+
return false if conditions[:context] && !Array(conditions[:context]).include?(relationship.context)
|
231
|
+
true
|
232
|
+
end
|
233
|
+
|
234
|
+
def parent_relationships_for(conditions = {})
|
235
|
+
parent_relationships.select do |relationship|
|
236
|
+
relationship_matches?(relationship, conditions)
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
def child_relationships_for(conditions = {})
|
241
|
+
child_relationships.select do |relationship|
|
242
|
+
relationship_matches?(relationship, conditions)
|
243
|
+
end
|
244
|
+
end
|
226
245
|
end
|
227
246
|
end
|
228
247
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts-as-joinable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 5
|
10
|
+
version: 0.1.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Lance Pollard
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-09-
|
18
|
+
date: 2010-09-29 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|