nested-resources 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +13 -5
- data/Rakefile +10 -8
- data/lib/nested-resources/nested-resources.rb +20 -14
- data/lib/nested-resources.rb +7 -5
- metadata +2 -2
data/README.rdoc
CHANGED
@@ -10,11 +10,11 @@ In Items controller.
|
|
10
10
|
You can write controller like this.
|
11
11
|
|
12
12
|
class ItemsController < ApplicationController
|
13
|
-
|
13
|
+
nested_resources :user # nested resource
|
14
14
|
|
15
15
|
def index
|
16
|
-
@user = nested(User) # find nested resource instance
|
17
|
-
@
|
16
|
+
@user = nested.instance(User) # find nested resource instance
|
17
|
+
@items = @user.items
|
18
18
|
|
19
19
|
respond_to do |format|
|
20
20
|
format.html # index.html.erb
|
@@ -32,7 +32,7 @@ In views.
|
|
32
32
|
|
33
33
|
In form view.
|
34
34
|
|
35
|
-
<%= form_for(nested(@item)) do |f| %> => [@user, @item]
|
35
|
+
<%= form_for(nested.resource(@item)) do |f| %> => [@user, @item]
|
36
36
|
...
|
37
37
|
<% end %>
|
38
38
|
|
@@ -50,12 +50,20 @@ Run bundle install
|
|
50
50
|
|
51
51
|
Has nested path?
|
52
52
|
|
53
|
-
nested?
|
53
|
+
nested?(:user)
|
54
54
|
=> true or false
|
55
55
|
|
56
56
|
Deep nested resources like /users/1/items/2/comments
|
57
57
|
|
58
58
|
nested_resources [:user, :item]
|
59
59
|
|
60
|
+
Recursive resources
|
61
|
+
|
62
|
+
resources :users, :as => "parents" do
|
63
|
+
resources :users
|
64
|
+
end
|
65
|
+
|
66
|
+
nested_resources :user => :parent
|
67
|
+
|
60
68
|
|
61
69
|
This project rocks and uses MIT-LICENSE.
|
data/Rakefile
CHANGED
@@ -7,19 +7,21 @@ rescue LoadError
|
|
7
7
|
end
|
8
8
|
|
9
9
|
require 'rake'
|
10
|
-
require 'rake/rdoctask'
|
11
10
|
|
12
|
-
require '
|
11
|
+
require 'rspec/core'
|
12
|
+
require 'rspec/core/rake_task'
|
13
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
14
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
15
|
+
end
|
13
16
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
t.pattern = 'test/**/*_test.rb'
|
18
|
-
t.verbose = false
|
17
|
+
RSpec::Core::RakeTask.new(:rcov) do |spec|
|
18
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
19
|
+
spec.rcov = true
|
19
20
|
end
|
20
21
|
|
21
|
-
task :default => :
|
22
|
+
task :default => :spec
|
22
23
|
|
24
|
+
require 'rake/rdoctask'
|
23
25
|
Rake::RDocTask.new(:rdoc) do |rdoc|
|
24
26
|
rdoc.rdoc_dir = 'rdoc'
|
25
27
|
rdoc.title = 'Nested-resources'
|
@@ -6,29 +6,35 @@ module NestedResources
|
|
6
6
|
attr_reader :controller
|
7
7
|
attr_reader :resources
|
8
8
|
|
9
|
-
def initialize(params, resources)
|
9
|
+
def initialize(params, *resources)
|
10
10
|
@controller = params[:controller].split('/').last
|
11
11
|
@given = {}
|
12
12
|
@given_id = {}
|
13
13
|
resources = [] if resources.blank?
|
14
|
-
resources
|
15
|
-
@resources = resources.map{|v|
|
16
|
-
v = v.to_s.underscore if v.is_a?(Class)
|
17
|
-
v.to_sym
|
18
|
-
}
|
14
|
+
parse(resources)
|
19
15
|
params.each { |k,v|
|
20
|
-
@resources.each{|resource|
|
21
|
-
|
22
|
-
@given_id[resource]= v if key == k.to_sym
|
16
|
+
@resources.each{|resource, resource_id|
|
17
|
+
@given_id[resource]= v if resource_id == k.to_sym
|
23
18
|
}
|
24
19
|
}
|
25
20
|
end
|
26
21
|
|
22
|
+
def parse(resource)
|
23
|
+
@resources ||= {}
|
24
|
+
if resource.is_a?(Array)
|
25
|
+
resource.each{|v| parse(v) }
|
26
|
+
elsif resource.is_a?(Hash)
|
27
|
+
resource.each{|k, v| @resources[k.to_sym] = (v.to_s.underscore+"_id").to_sym}
|
28
|
+
else
|
29
|
+
@resources[resource.to_sym] = (resource.to_s.underscore+"_id").to_sym
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
27
33
|
def path(original_path)
|
28
34
|
original_path.split('/').map { |path|
|
29
35
|
if path==controller
|
30
36
|
respath=""
|
31
|
-
@resources.each { |resource|
|
37
|
+
@resources.each { |resource, resource_id|
|
32
38
|
respath += resource.to_s.pluralize+"/"+@given_id[resource].to_s+"/" unless @given_id[resource].blank?
|
33
39
|
}
|
34
40
|
respath+path
|
@@ -43,7 +49,7 @@ module NestedResources
|
|
43
49
|
result = []
|
44
50
|
res.each_index { |i|
|
45
51
|
if i==res.length-1
|
46
|
-
@resources.each{ |resource|
|
52
|
+
@resources.each{ |resource, resource_id|
|
47
53
|
result.push instance(resource) unless @given_id[resource].blank?
|
48
54
|
}
|
49
55
|
end
|
@@ -56,12 +62,12 @@ module NestedResources
|
|
56
62
|
alias_method :resources, :object
|
57
63
|
|
58
64
|
def instance(name)
|
59
|
-
name = name.to_s.underscore
|
60
|
-
@given[name.to_sym] ||=
|
65
|
+
name = name.to_s.underscore
|
66
|
+
@given[name.to_sym] ||= name.to_s.camelize.constantize.find(@given_id[name.to_sym])
|
61
67
|
end
|
62
68
|
|
63
69
|
def exists?(name)
|
64
|
-
name = name.to_s.underscore
|
70
|
+
name = name.to_s.underscore
|
65
71
|
!!@given_id[name.to_sym]
|
66
72
|
end
|
67
73
|
|
data/lib/nested-resources.rb
CHANGED
@@ -6,16 +6,18 @@ module NestedResources
|
|
6
6
|
module NestedResourcesHelper
|
7
7
|
def nested(obj = nil)
|
8
8
|
if obj.is_a?(Class)
|
9
|
-
@
|
9
|
+
@nested_resources.instance(obj)
|
10
|
+
elsif obj.is_a?(String)
|
11
|
+
@nested_resources.path(obj)
|
10
12
|
elsif obj
|
11
|
-
@
|
13
|
+
@nested_resources.resources(obj)
|
12
14
|
else
|
13
|
-
@
|
15
|
+
@nested_resources
|
14
16
|
end
|
15
17
|
end
|
16
18
|
|
17
19
|
def nested?(obj)
|
18
|
-
@
|
20
|
+
@nested_resources.exists?(obj)
|
19
21
|
end
|
20
22
|
end
|
21
23
|
end
|
@@ -35,7 +37,7 @@ class ActionController::Base
|
|
35
37
|
def nested_resources_filter
|
36
38
|
resources = self.class.read_inheritable_attribute(:nested_resources)
|
37
39
|
return if resources.blank?
|
38
|
-
@
|
40
|
+
@nested_resources = NestedResources::NestedResources.new(params, resources)
|
39
41
|
end
|
40
42
|
|
41
43
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: nested-resources
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.3
|
6
6
|
platform: ruby
|
7
7
|
authors: []
|
8
8
|
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-05-
|
13
|
+
date: 2011-05-17 00:00:00 Z
|
14
14
|
dependencies: []
|
15
15
|
|
16
16
|
description: Resolve Rails3 nested resources.
|