acts-as-joinable 0.1.7.8 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
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.7.8"
8
+ s.version = "0.2"
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"
@@ -1,4 +1,4 @@
1
- class ActsAsJoinable::Relationship < ActiveRecord::Base
1
+ class Relationship < ActiveRecord::Base
2
2
  acts_as_relationship
3
3
 
4
4
  def swap_parent_and_child
@@ -51,7 +51,7 @@ module ActsAsJoinable
51
51
  conditions = options[:conditions] || {}
52
52
  conditions["#{relationship.to_s}_type".to_sym] = ([self.name] + (self.send(:subclasses) - self.included_modules).map(&:name)).flatten.uniq
53
53
  group = options[:group] || "#{relationship}_id"
54
- ActsAsJoinable::Relationship.count(:conditions => conditions, :group => group)
54
+ Relationship.count(:conditions => conditions, :group => group)
55
55
  end
56
56
 
57
57
  def acts_as_joinable
@@ -78,8 +78,8 @@ module ActsAsJoinable
78
78
 
79
79
  # parent, child, or contexts (both) for custom helper getters/setters
80
80
 
81
- has_many :parent_relationships, :class_name => 'ActsAsJoinable::Relationship', :as => :child, :foreign_key => "child_id", :uniq => true
82
- has_many :child_relationships, :class_name => 'ActsAsJoinable::Relationship', :as => :parent, :foreign_key => "parent_id", :uniq => true
81
+ has_many :parent_relationships, :class_name => 'Relationship', :as => :child, :foreign_key => "child_id", :uniq => true
82
+ has_many :child_relationships, :class_name => 'Relationship', :as => :parent, :foreign_key => "parent_id", :uniq => true
83
83
 
84
84
  after_destroy :destroy_relationships unless after_destroy.map(&:method).include?(:destroy_relationships)
85
85
 
@@ -120,7 +120,7 @@ module ActsAsJoinable
120
120
  # relationship_table = `relationships`
121
121
  relationship = opposite_for(relationship)
122
122
  through_relationship = "#{relationship.to_s}_#{singular_type}_relationships".to_sym
123
- relationship_table = ActsAsJoinable::Relationship.quoted_table_name rescue nil
123
+ relationship_table = Relationship.quoted_table_name rescue nil
124
124
 
125
125
  options.merge!(:through => through_relationship, :source => relationship, :uniq => true)
126
126
 
@@ -148,7 +148,7 @@ module ActsAsJoinable
148
148
  end
149
149
 
150
150
  through_options = {
151
- :class_name => "ActsAsJoinable::Relationship",
151
+ :class_name => "Relationship",
152
152
  :conditions => conditions,
153
153
  :as => opposite_for(relationship).to_sym
154
154
  # :select => "#{relationship}_id, #{relationship}_type, id, #{opposite_for(relationship)}_id"
@@ -210,7 +210,7 @@ module ActsAsJoinable
210
210
 
211
211
  def find_joined(model, conditions = {})
212
212
  join_conditions(model, conditions.delete(:relationship) || {}) do |kind, source_type, relationship_conditions|
213
- ids = ActsAsJoinable::Relationship.select_attributes("#{opposite_for(kind)}_id", relationship_conditions).uniq
213
+ ids = Relationship.select_attributes("#{opposite_for(kind)}_id", relationship_conditions).uniq
214
214
  source_type.all(:conditions => {:id => ids}.merge(conditions))
215
215
  end
216
216
  end
@@ -225,7 +225,7 @@ module ActsAsJoinable
225
225
 
226
226
  def action_from_joined(action, model, conditions)
227
227
  join_conditions(model, conditions.delete(:relationship) || {}) do |kind, source_type, relationship_conditions|
228
- ids = ActsAsJoinable::Relationship.select_attributes("#{kind}_id", relationship_conditions).uniq.compact.map(&:to_i)
228
+ ids = Relationship.select_attributes("#{kind}_id", relationship_conditions).uniq.compact.map(&:to_i)
229
229
  send(action, :conditions => {:id => ids}.merge(conditions))
230
230
  end
231
231
  end
@@ -294,7 +294,11 @@ module ActsAsJoinable
294
294
  end
295
295
  end
296
296
  define_method "#{singular_type}_id" do
297
- send(singular_type).id rescue nil
297
+ if result = send(singular_type)
298
+ result.respond_to?(:id) ? result.id : nil
299
+ else
300
+ nil
301
+ end
298
302
  end
299
303
  define_method "#{singular_type}_id=" do |id|
300
304
  item = id.blank? ? nil : class_name.constantize.find_by_id(id)
@@ -336,11 +340,11 @@ module ActsAsJoinable
336
340
  def destroy_relationships
337
341
  #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})|
338
342
  classes = [self.class.name, self.class.base_class.name].compact.uniq
339
- #relationship_table_name = ActsAsJoinable::Relationship.quoted_table_name
343
+ #relationship_table_name = Relationship.quoted_table_name
340
344
  #conditions = %Q|(#{relationship_table_name}.parent_type IN (#{classes}) AND #{relationship_table_name}.parent_id = #{self.id}) OR (#{relationship_table_name}.child_type IN (#{classes}) AND #{relationship_table_name}.child_id = #{self.id})|
341
- #ActsAsJoinable::Relationship.delete_all(conditions)
342
- ActsAsJoinable::Relationship.delete_all(:parent_type => classes, :parent_id => self.id)
343
- ActsAsJoinable::Relationship.delete_all(:child_type => classes, :child_id => self.id)
345
+ #Relationship.delete_all(conditions)
346
+ Relationship.delete_all(:parent_type => classes, :parent_id => self.id)
347
+ Relationship.delete_all(:child_type => classes, :child_id => self.id)
344
348
  end
345
349
 
346
350
  def relationship_matches?(relationship, conditions)
@@ -18,7 +18,7 @@ class ActsAsJoinableTest < ActiveRecord::TestCase
18
18
  @sub_class.reload
19
19
  @grandparent.reload
20
20
 
21
- association = ActsAsJoinable::Relationship.first
21
+ association = Relationship.first
22
22
 
23
23
  assert @sub_class.valid?
24
24
  assert_equal "SubGroup", association.child_type
@@ -67,7 +67,7 @@ class ActsAsJoinableTest < ActiveRecord::TestCase
67
67
  end
68
68
 
69
69
  should "have optimized sql calls" do
70
- ActsAsJoinable::Relationship.delete_all
70
+ Relationship.delete_all
71
71
  group = Group.create!
72
72
  group.posts << Post.create!
73
73
  group.posts << Post.create!
@@ -82,7 +82,7 @@ class ActsAsJoinableTest < ActiveRecord::TestCase
82
82
  group.destroy
83
83
  end
84
84
 
85
- assert_equal 0, ActsAsJoinable::Relationship.count
85
+ assert_equal 0, Relationship.count
86
86
  end
87
87
 
88
88
  context "follow validation conventions" do
data/test/test_helper.rb CHANGED
@@ -52,7 +52,7 @@ ActiveSupport::TestCase.class_eval do
52
52
  Tag.detonate
53
53
  Asset.detonate
54
54
  Page.detonate
55
- ActsAsJoinable::Relationship.detonate
55
+ Relationship.detonate
56
56
  Group.detonate
57
57
  Asset.detonate
58
58
  end
metadata CHANGED
@@ -1,14 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts-as-joinable
3
3
  version: !ruby/object:Gem::Version
4
- hash: 75
4
+ hash: 15
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 1
9
- - 7
10
- - 8
11
- version: 0.1.7.8
8
+ - 2
9
+ version: "0.2"
12
10
  platform: ruby
13
11
  authors:
14
12
  - Lance Pollard
@@ -16,7 +14,7 @@ autorequire:
16
14
  bindir: bin
17
15
  cert_chain: []
18
16
 
19
- date: 2010-10-20 00:00:00 -05:00
17
+ date: 2010-10-22 00:00:00 -05:00
20
18
  default_executable:
21
19
  dependencies: []
22
20