acts_as_relatable 0.0.2 → 0.0.3

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/README.rdoc CHANGED
@@ -10,7 +10,7 @@ Gem installation :
10
10
 
11
11
  Or you can put it in your Gemfile :
12
12
 
13
- gem "acts_as_relatable"
13
+ gem "acts_as_relatable", "~> 0.0.3"
14
14
 
15
15
  and then run :
16
16
 
@@ -28,7 +28,7 @@ Followed by :
28
28
 
29
29
  # Model definition
30
30
 
31
- class Recipe < ActiveRecord::Base
31
+ class Tool < ActiveRecord::Base
32
32
  acts_as_relatable :product
33
33
  end
34
34
 
@@ -36,21 +36,27 @@ Followed by :
36
36
  acts_as_relatable :recipe
37
37
  end
38
38
 
39
+ class Recipe < ActiveRecord::Base
40
+ acts_as_relatable :product, :tool
41
+ end
42
+
39
43
  # Create some entries
40
44
 
41
45
  @bread = Product.create(:name => "Bread")
42
46
  @butter = Product.create(:name => "Butter")
43
47
  @pancake = Recipe.create(:name => "Pancakes")
48
+ @mixer = Tool.create(:name => "Mixer")
44
49
 
45
50
 
46
51
  #Creating relationships
47
52
 
48
- @butter.relates_to!(@pancake) # #<ActsAsRelatable::Relationship id: 2, relator_id: 1, relator_type: "Recipe", related_id: 2, related_type: "Product">
49
- @bread.relates_to!(@butter) # #<ActsAsRelatable::Relationship id: 4, relator_id: 2, relator_type: "Product", related_id: 1, related_type: "Product">
53
+ @butter.relates_to!(@pancake) # #<ActsAsRelatable::Relationship id: 2, relator_id: 2, relator_type: "Product", related_id: 1, related_type: "Recipe">
54
+ @pancake.relates_to!(@mixer) # #<ActsAsRelatable::Relationship id: 3, relator_id: 1, relator_type: "Recipe", related_id: 1, related_type: "Tool">
55
+ @bread.relates_to!(@butter) # #<ActsAsRelatable::Relationship id: 4, relator_id: 1, relator_type: "Product", related_id: 2, related_type: "Product">
50
56
 
51
57
  # By default, relationships are both-sided, it means that on the first line above,
52
58
  # @butter is related to @pancake, but @pancake is also related to @butter.
53
- #If you don't want/need this behaviour, you can pass false as a second argument
59
+ # If you don't want/need this behaviour, you can pass false as a second argument
54
60
  # to the relates_to! instance method :
55
61
 
56
62
  @butter.relates_to!(@pancake, false)
@@ -63,6 +69,7 @@ Followed by :
63
69
 
64
70
 
65
71
  @butter.relateds # {:recipes=>[#<Recipe id: 1, name: "Pancakes">], :products=>[#<Product id: 1, name: "Bread">]}
72
+ @pancake.relateds # {:tools=>[#<Tool id: 1, name: "Mixer">], :products=>[#<Product id: 2, name: "Butter">]}
66
73
 
67
74
  #Testing relationships
68
75
 
@@ -74,6 +81,30 @@ Followed by :
74
81
 
75
82
  @butter.destroy_relation_with @pancake
76
83
 
84
+ == Configuration
85
+
86
+ To create the acts_as_relatable config file, open a shell and run :
87
+
88
+ r g acts_as_relatable:config
89
+
90
+ It will create a file called acts_as_relatable.rb in config/initializers
91
+
92
+ == Relationship Shortcut
93
+
94
+ By default, the Relationship model is accessible with :
95
+
96
+ ActsAsRelatable::Relationship
97
+ ActsAsRelatable::Relationship.count
98
+
99
+ If you want to access it directly with
100
+
101
+ Relationship
102
+ Relationship.first
103
+
104
+ Just uncomment this line in the config file (see Configuration section above to see how to generate it)
105
+
106
+ Relationship = ActsAsRelatable::Relationship
107
+
77
108
  == Relationship model extension
78
109
 
79
110
  You can add class/instance methods to the ActsAsRelatable::Relationship model
@@ -103,11 +134,8 @@ Let's call this module RelationshipExtension. The file may look like :
103
134
  end
104
135
  end
105
136
 
106
- In a shell, run :
107
137
 
108
- r g acts_as_relatable:config
109
-
110
- It will create a file called acts_as_relatable.rb in config/initializers
138
+ Generate the config file (see Configuration section above to see how to generate it)
111
139
 
112
140
  Open this file and uncomment this line :
113
141
 
@@ -1,2 +1,5 @@
1
1
  # Uncomment the following line if you want to add methods to the ActsAsRelatable::Relationship AR model
2
- #ActsAsRelatable::Relationship.send(:include, RelationshipExtension)
2
+ #ActsAsRelatable::Relationship.send(:include, RelationshipExtension)
3
+
4
+ #Uncomment this line if you want a shortcut for the Relationship class
5
+ #Relationship = ActsAsRelatable::Relationship
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: acts_as_relatable
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.2
5
+ version: 0.0.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - "Fr\xC3\xA9d\xC3\xA9ric Malamitsas"
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-08-16 00:00:00 Z
13
+ date: 2011-08-17 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails