acts-as-joinable 0.1.7.8 → 0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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