acts_as_relation 0.1.1 → 0.1.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/README.rdoc
CHANGED
@@ -17,10 +17,12 @@ declare the product as a +supermodel+ and all types of it as +acts_as+ +:product
|
|
17
17
|
|
18
18
|
class Product < ActiveRecord::Base
|
19
19
|
acts_as_superclass
|
20
|
+
attr_accessible :name, :price
|
20
21
|
end
|
21
22
|
|
22
23
|
class Pen < ActiveRecord::Base
|
23
24
|
acts_as :product
|
25
|
+
attr_accessible :color
|
24
26
|
end
|
25
27
|
|
26
28
|
class Book < ActiveRecord::Base
|
@@ -80,14 +82,14 @@ On the other hand you can always access a specific object from its parent by cal
|
|
80
82
|
The +acts_as+ relation support these options:
|
81
83
|
|
82
84
|
* +:as+
|
83
|
-
* +:
|
85
|
+
* +:auto_join+
|
84
86
|
* +:class_name+
|
85
87
|
* +:conditions+
|
86
88
|
* +:dependent+
|
87
89
|
* +:include+
|
88
90
|
|
89
91
|
when +:auto_join+ option set to +true+ (which is by default), every query on child
|
90
|
-
will automatically
|
92
|
+
will automatically joins the parent table. For example:
|
91
93
|
|
92
94
|
Pen.where("name = ?", "somename")
|
93
95
|
|
@@ -56,11 +56,13 @@ module ActiveRecord
|
|
56
56
|
base.alias_method_chain :#{name}, :autobuild
|
57
57
|
|
58
58
|
base.extend ActiveRecord::ActsAsRelation::AccessMethods
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
attributes_to_delegate =
|
59
|
+
attributes = #{class_name}.content_columns.map(&:name)
|
60
|
+
associations = #{class_name}.reflect_on_all_associations.map(&:name)
|
61
|
+
ignored = ["created_at", "updated_at", "#{association_name}_id", "#{association_name}_type", "#{association_name}"]
|
62
|
+
attributes_to_delegate = attributes + associations - ignored
|
63
63
|
base.send :define_acts_as_accessors, attributes_to_delegate, "#{name}"
|
64
|
+
|
65
|
+
base.attr_accessible.update(#{class_name}.attr_accessible)
|
64
66
|
end
|
65
67
|
|
66
68
|
def #{name}_with_autobuild
|
@@ -97,9 +99,11 @@ module ActiveRecord
|
|
97
99
|
end
|
98
100
|
|
99
101
|
if options.fetch :auto_join, true
|
100
|
-
class_eval "default_scope joins(:#{name})
|
102
|
+
class_eval "default_scope joins(:#{name})"
|
101
103
|
end
|
102
104
|
|
105
|
+
class_eval "default_scope readonly(false)"
|
106
|
+
|
103
107
|
code = <<-EndCode
|
104
108
|
def acts_as_other_model?
|
105
109
|
true
|
data/lib/version.rb
CHANGED
@@ -20,11 +20,12 @@ describe "Submodel" do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
it "inherits Supermodel associations" do
|
23
|
-
store = Store.
|
24
|
-
pen = Pen.
|
23
|
+
store = Store.create :name => 'Big Store'
|
24
|
+
pen = Pen.create :name => 'RedPen', :price => 0.8, :color => 'red'
|
25
25
|
pen.store = store
|
26
|
-
pen.
|
27
|
-
pen.
|
26
|
+
pen.save
|
27
|
+
Pen.find(pen.id).store.should == store
|
28
|
+
Pen.find(pen.id).product.store.should == store
|
28
29
|
end
|
29
30
|
|
30
31
|
it "inherits Supermodel validations" do
|
@@ -70,6 +71,12 @@ describe "Submodel" do
|
|
70
71
|
end
|
71
72
|
end
|
72
73
|
|
74
|
+
it "have supermodel attr_accessibles as attr_accessibles" do
|
75
|
+
Pen.attr_accessible[:default].each do |a|
|
76
|
+
Pencil.attr_accessible[:default].should include(a)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
73
80
|
it "should be findable" do
|
74
81
|
pen = Pen.create :name => 'RedPen', :price => 0.8, :color => 'red'
|
75
82
|
pen = Pen.find(pen.id)
|
data/spec/dummy/db/schema.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_relation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05
|
12
|
+
date: 2012-07-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -206,53 +206,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
206
206
|
version: '0'
|
207
207
|
requirements: []
|
208
208
|
rubyforge_project:
|
209
|
-
rubygems_version: 1.8.
|
209
|
+
rubygems_version: 1.8.24
|
210
210
|
signing_key:
|
211
211
|
specification_version: 3
|
212
212
|
summary: Easy multi-table inheritance for rails
|
213
|
-
test_files:
|
214
|
-
- spec/acts_as_relation_spec.rb
|
215
|
-
- spec/acts_as_superclass_spec.rb
|
216
|
-
- spec/dummy/.rspec
|
217
|
-
- spec/dummy/README.rdoc
|
218
|
-
- spec/dummy/Rakefile
|
219
|
-
- spec/dummy/app/assets/javascripts/application.js
|
220
|
-
- spec/dummy/app/assets/stylesheets/application.css
|
221
|
-
- spec/dummy/app/controllers/application_controller.rb
|
222
|
-
- spec/dummy/app/helpers/application_helper.rb
|
223
|
-
- spec/dummy/app/mailers/.gitkeep
|
224
|
-
- spec/dummy/app/models/.gitkeep
|
225
|
-
- spec/dummy/app/models/pen.rb
|
226
|
-
- spec/dummy/app/models/pencil.rb
|
227
|
-
- spec/dummy/app/models/product.rb
|
228
|
-
- spec/dummy/app/models/store.rb
|
229
|
-
- spec/dummy/app/views/layouts/application.html.erb
|
230
|
-
- spec/dummy/config.ru
|
231
|
-
- spec/dummy/config/application.rb
|
232
|
-
- spec/dummy/config/boot.rb
|
233
|
-
- spec/dummy/config/database.yml
|
234
|
-
- spec/dummy/config/environment.rb
|
235
|
-
- spec/dummy/config/environments/development.rb
|
236
|
-
- spec/dummy/config/environments/production.rb
|
237
|
-
- spec/dummy/config/environments/test.rb
|
238
|
-
- spec/dummy/config/initializers/backtrace_silencers.rb
|
239
|
-
- spec/dummy/config/initializers/inflections.rb
|
240
|
-
- spec/dummy/config/initializers/mime_types.rb
|
241
|
-
- spec/dummy/config/initializers/secret_token.rb
|
242
|
-
- spec/dummy/config/initializers/session_store.rb
|
243
|
-
- spec/dummy/config/initializers/wrap_parameters.rb
|
244
|
-
- spec/dummy/config/locales/en.yml
|
245
|
-
- spec/dummy/config/routes.rb
|
246
|
-
- spec/dummy/db/migrate/001_create_stores.rb
|
247
|
-
- spec/dummy/db/migrate/002_create_products.rb
|
248
|
-
- spec/dummy/db/migrate/003_create_pens.rb
|
249
|
-
- spec/dummy/db/migrate/004_create_pencils.rb
|
250
|
-
- spec/dummy/db/schema.rb
|
251
|
-
- spec/dummy/lib/assets/.gitkeep
|
252
|
-
- spec/dummy/log/.gitkeep
|
253
|
-
- spec/dummy/public/404.html
|
254
|
-
- spec/dummy/public/422.html
|
255
|
-
- spec/dummy/public/500.html
|
256
|
-
- spec/dummy/public/favicon.ico
|
257
|
-
- spec/dummy/script/rails
|
258
|
-
- spec/spec_helper.rb
|
213
|
+
test_files: []
|