composite_primary_keys 13.0.1 → 13.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.
- checksums.yaml +4 -4
- data/History.rdoc +891 -888
- data/README.rdoc +181 -181
- data/Rakefile +37 -37
- data/lib/composite_primary_keys/arel/sqlserver.rb +37 -37
- data/lib/composite_primary_keys/arel/to_sql.rb +18 -18
- data/lib/composite_primary_keys/associations/association.rb +23 -23
- data/lib/composite_primary_keys/associations/collection_association.rb +31 -31
- data/lib/composite_primary_keys/associations/foreign_association.rb +15 -15
- data/lib/composite_primary_keys/associations/has_many_association.rb +35 -35
- data/lib/composite_primary_keys/associations/{join_dependency.rb → join_association.rb} +1 -1
- data/lib/composite_primary_keys/associations/through_association.rb +25 -25
- data/lib/composite_primary_keys/autosave_association.rb +60 -60
- data/lib/composite_primary_keys/composite_arrays.rb +86 -86
- data/lib/composite_primary_keys/composite_relation.rb +29 -29
- data/lib/composite_primary_keys/connection_adapters/abstract_adapter.rb +10 -10
- data/lib/composite_primary_keys/connection_adapters/postgresql/database_statements.rb +26 -26
- data/lib/composite_primary_keys/counter_cache.rb +15 -15
- data/lib/composite_primary_keys/fixtures.rb +21 -21
- data/lib/composite_primary_keys/persistence.rb +82 -82
- data/lib/composite_primary_keys/relation/calculations.rb +104 -104
- data/lib/composite_primary_keys/sanitization.rb +42 -42
- data/lib/composite_primary_keys/transactions.rb +34 -34
- data/lib/composite_primary_keys/validations/uniqueness.rb +31 -31
- data/lib/composite_primary_keys/version.rb +8 -8
- data/lib/composite_primary_keys.rb +118 -118
- data/scripts/console.rb +48 -48
- data/scripts/txt2html +76 -76
- data/scripts/txt2js +65 -65
- data/tasks/databases/mysql.rake +40 -40
- data/tasks/databases/oracle.rake +41 -41
- data/tasks/databases/postgresql.rake +38 -38
- data/tasks/databases/sqlite.rake +25 -25
- data/tasks/databases/sqlserver.rake +43 -43
- data/tasks/website.rake +18 -18
- data/test/README_tests.rdoc +56 -56
- data/test/abstract_unit.rb +114 -114
- data/test/connections/connection_spec.rb +27 -27
- data/test/connections/databases.example.yml +40 -40
- data/test/connections/databases.yml +40 -39
- data/test/fixtures/article.rb +10 -10
- data/test/fixtures/articles.yml +7 -7
- data/test/fixtures/capitol.rb +3 -3
- data/test/fixtures/capitols.yml +16 -16
- data/test/fixtures/comment.rb +5 -5
- data/test/fixtures/comments.yml +17 -17
- data/test/fixtures/department.rb +16 -16
- data/test/fixtures/dorm.rb +2 -2
- data/test/fixtures/dorms.yml +4 -4
- data/test/fixtures/employee.rb +5 -5
- data/test/fixtures/group.rb +2 -2
- data/test/fixtures/groups.yml +6 -6
- data/test/fixtures/membership.rb +8 -8
- data/test/fixtures/membership_status.rb +2 -2
- data/test/fixtures/membership_statuses.yml +16 -16
- data/test/fixtures/memberships.yml +10 -10
- data/test/fixtures/product.rb +9 -9
- data/test/fixtures/product_tariff.rb +5 -5
- data/test/fixtures/product_tariffs.yml +14 -14
- data/test/fixtures/products.yml +11 -11
- data/test/fixtures/reading.rb +4 -4
- data/test/fixtures/readings.yml +10 -10
- data/test/fixtures/reference_code.rb +7 -7
- data/test/fixtures/reference_codes.yml +28 -28
- data/test/fixtures/reference_type.rb +12 -12
- data/test/fixtures/reference_types.yml +9 -9
- data/test/fixtures/restaurant.rb +9 -9
- data/test/fixtures/restaurants.yml +14 -14
- data/test/fixtures/restaurants_suburb.rb +2 -2
- data/test/fixtures/room.rb +11 -11
- data/test/fixtures/room_assignment.rb +13 -13
- data/test/fixtures/room_assignments.yml +24 -24
- data/test/fixtures/room_attribute.rb +2 -2
- data/test/fixtures/room_attribute_assignment.rb +4 -4
- data/test/fixtures/room_attribute_assignments.yml +4 -4
- data/test/fixtures/room_attributes.yml +2 -2
- data/test/fixtures/rooms.yml +12 -12
- data/test/fixtures/street.rb +2 -2
- data/test/fixtures/student.rb +3 -3
- data/test/fixtures/students.yml +15 -15
- data/test/fixtures/suburb.rb +5 -5
- data/test/fixtures/tariff.rb +5 -5
- data/test/fixtures/tariffs.yml +14 -14
- data/test/fixtures/topic_sources.yml +3 -3
- data/test/fixtures/topics.yml +8 -8
- data/test/fixtures/users.yml +10 -10
- data/test/plugins/pagination.rb +405 -405
- data/test/plugins/pagination_helper.rb +135 -135
- data/test/test_associations.rb +372 -372
- data/test/test_attribute_methods.rb +63 -63
- data/test/test_callbacks.rb +99 -99
- data/test/test_composite_arrays.rb +38 -38
- data/test/test_counter_cache.rb +30 -30
- data/test/test_dumpable.rb +15 -15
- data/test/test_dup.rb +37 -37
- data/test/test_equal.rb +26 -26
- data/test/test_habtm.rb +141 -141
- data/test/test_miscellaneous.rb +32 -32
- data/test/test_optimistic.rb +18 -18
- data/test/test_pagination.rb +35 -35
- data/test/test_polymorphic.rb +43 -43
- data/test/test_predicates.rb +59 -59
- data/test/test_preload.rb +102 -102
- data/test/test_santiago.rb +23 -23
- data/test/test_touch.rb +23 -23
- data/test/test_tutorial_example.rb +25 -25
- data/test/test_validations.rb +13 -13
- metadata +4 -4
@@ -1,135 +1,135 @@
|
|
1
|
-
module ActionView
|
2
|
-
module Helpers
|
3
|
-
# Provides methods for linking to ActionController::Pagination objects using a simple generator API. You can optionally
|
4
|
-
# also build your links manually using ActionView::Helpers::AssetHelper#link_to like so:
|
5
|
-
#
|
6
|
-
# <%= link_to "Previous page", { :page => paginator.current.previous } if paginator.current.previous %>
|
7
|
-
# <%= link_to "Next page", { :page => paginator.current.next } if paginator.current.next %>
|
8
|
-
module PaginationHelper
|
9
|
-
unless const_defined?(:DEFAULT_OPTIONS)
|
10
|
-
DEFAULT_OPTIONS = {
|
11
|
-
:name => :page,
|
12
|
-
:window_size => 2,
|
13
|
-
:always_show_anchors => true,
|
14
|
-
:link_to_current_page => false,
|
15
|
-
:params => {}
|
16
|
-
}
|
17
|
-
end
|
18
|
-
|
19
|
-
# Creates a basic HTML link bar for the given +paginator+. Links will be created
|
20
|
-
# for the next and/or previous page and for a number of other pages around the current
|
21
|
-
# pages position. The +html_options+ hash is passed to +link_to+ when the links are created.
|
22
|
-
#
|
23
|
-
# ==== Options
|
24
|
-
# <tt>:name</tt>:: the routing name for this paginator
|
25
|
-
# (defaults to +page+)
|
26
|
-
# <tt>:prefix</tt>:: prefix for pagination links
|
27
|
-
# (i.e. Older Pages: 1 2 3 4)
|
28
|
-
# <tt>:suffix</tt>:: suffix for pagination links
|
29
|
-
# (i.e. 1 2 3 4 <- Older Pages)
|
30
|
-
# <tt>:window_size</tt>:: the number of pages to show around
|
31
|
-
# the current page (defaults to <tt>2</tt>)
|
32
|
-
# <tt>:always_show_anchors</tt>:: whether or not the first and last
|
33
|
-
# pages should always be shown
|
34
|
-
# (defaults to +true+)
|
35
|
-
# <tt>:link_to_current_page</tt>:: whether or not the current page
|
36
|
-
# should be linked to (defaults to
|
37
|
-
# +false+)
|
38
|
-
# <tt>:params</tt>:: any additional routing parameters
|
39
|
-
# for page URLs
|
40
|
-
#
|
41
|
-
# ==== Examples
|
42
|
-
# # We'll assume we have a paginator setup in @person_pages...
|
43
|
-
#
|
44
|
-
# pagination_links(@person_pages)
|
45
|
-
# # => 1 <a href="/?page=2/">2</a> <a href="/?page=3/">3</a> ... <a href="/?page=10/">10</a>
|
46
|
-
#
|
47
|
-
# pagination_links(@person_pages, :link_to_current_page => true)
|
48
|
-
# # => <a href="/?page=1/">1</a> <a href="/?page=2/">2</a> <a href="/?page=3/">3</a> ... <a href="/?page=10/">10</a>
|
49
|
-
#
|
50
|
-
# pagination_links(@person_pages, :always_show_anchors => false)
|
51
|
-
# # => 1 <a href="/?page=2/">2</a> <a href="/?page=3/">3</a>
|
52
|
-
#
|
53
|
-
# pagination_links(@person_pages, :window_size => 1)
|
54
|
-
# # => 1 <a href="/?page=2/">2</a> ... <a href="/?page=10/">10</a>
|
55
|
-
#
|
56
|
-
# pagination_links(@person_pages, :params => { :viewer => "flash" })
|
57
|
-
# # => 1 <a href="/?page=2&viewer=flash/">2</a> <a href="/?page=3&viewer=flash/">3</a> ...
|
58
|
-
# # <a href="/?page=10&viewer=flash/">10</a>
|
59
|
-
def pagination_links(paginator, options={}, html_options={})
|
60
|
-
name = options[:name] || DEFAULT_OPTIONS[:name]
|
61
|
-
params = (options[:params] || DEFAULT_OPTIONS[:params]).clone
|
62
|
-
|
63
|
-
prefix = options[:prefix] || ''
|
64
|
-
suffix = options[:suffix] || ''
|
65
|
-
|
66
|
-
pagination_links_each(paginator, options, prefix, suffix) do |n|
|
67
|
-
params[name] = n
|
68
|
-
link_to(n.to_s, params, html_options)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
# Iterate through the pages of a given +paginator+, invoking a
|
73
|
-
# block for each page number that needs to be rendered as a link.
|
74
|
-
#
|
75
|
-
# ==== Options
|
76
|
-
# <tt>:window_size</tt>:: the number of pages to show around
|
77
|
-
# the current page (defaults to +2+)
|
78
|
-
# <tt>:always_show_anchors</tt>:: whether or not the first and last
|
79
|
-
# pages should always be shown
|
80
|
-
# (defaults to +true+)
|
81
|
-
# <tt>:link_to_current_page</tt>:: whether or not the current page
|
82
|
-
# should be linked to (defaults to
|
83
|
-
# +false+)
|
84
|
-
#
|
85
|
-
# ==== Example
|
86
|
-
# # Turn paginated links into an Ajax call
|
87
|
-
# pagination_links_each(paginator, page_options) do |link|
|
88
|
-
# options = { :url => {:action => 'list'}, :update => 'results' }
|
89
|
-
# html_options = { :href => url_for(:action => 'list') }
|
90
|
-
#
|
91
|
-
# link_to_remote(link.to_s, options, html_options)
|
92
|
-
# end
|
93
|
-
def pagination_links_each(paginator, options, prefix = nil, suffix = nil)
|
94
|
-
options = DEFAULT_OPTIONS.merge(options)
|
95
|
-
link_to_current_page = options[:link_to_current_page]
|
96
|
-
always_show_anchors = options[:always_show_anchors]
|
97
|
-
|
98
|
-
current_page = paginator.current_page
|
99
|
-
window_pages = current_page.window(options[:window_size]).pages
|
100
|
-
return if window_pages.length <= 1 unless link_to_current_page
|
101
|
-
|
102
|
-
first, last = paginator.first, paginator.last
|
103
|
-
|
104
|
-
html = ''
|
105
|
-
|
106
|
-
html << prefix if prefix
|
107
|
-
|
108
|
-
if always_show_anchors and not (wp_first = window_pages[0]).first?
|
109
|
-
html << yield(first.number)
|
110
|
-
html << ' ... ' if wp_first.number - first.number > 1
|
111
|
-
html << ' '
|
112
|
-
end
|
113
|
-
|
114
|
-
window_pages.each do |page|
|
115
|
-
if current_page == page && !link_to_current_page
|
116
|
-
html << page.number.to_s
|
117
|
-
else
|
118
|
-
html << yield(page.number)
|
119
|
-
end
|
120
|
-
html << ' '
|
121
|
-
end
|
122
|
-
|
123
|
-
if always_show_anchors and not (wp_last = window_pages[-1]).last?
|
124
|
-
html << ' ... ' if last.number - wp_last.number > 1
|
125
|
-
html << yield(last.number)
|
126
|
-
end
|
127
|
-
|
128
|
-
html << suffix if suffix
|
129
|
-
|
130
|
-
html
|
131
|
-
end
|
132
|
-
|
133
|
-
end # PaginationHelper
|
134
|
-
end # Helpers
|
135
|
-
end # ActionView
|
1
|
+
module ActionView
|
2
|
+
module Helpers
|
3
|
+
# Provides methods for linking to ActionController::Pagination objects using a simple generator API. You can optionally
|
4
|
+
# also build your links manually using ActionView::Helpers::AssetHelper#link_to like so:
|
5
|
+
#
|
6
|
+
# <%= link_to "Previous page", { :page => paginator.current.previous } if paginator.current.previous %>
|
7
|
+
# <%= link_to "Next page", { :page => paginator.current.next } if paginator.current.next %>
|
8
|
+
module PaginationHelper
|
9
|
+
unless const_defined?(:DEFAULT_OPTIONS)
|
10
|
+
DEFAULT_OPTIONS = {
|
11
|
+
:name => :page,
|
12
|
+
:window_size => 2,
|
13
|
+
:always_show_anchors => true,
|
14
|
+
:link_to_current_page => false,
|
15
|
+
:params => {}
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
# Creates a basic HTML link bar for the given +paginator+. Links will be created
|
20
|
+
# for the next and/or previous page and for a number of other pages around the current
|
21
|
+
# pages position. The +html_options+ hash is passed to +link_to+ when the links are created.
|
22
|
+
#
|
23
|
+
# ==== Options
|
24
|
+
# <tt>:name</tt>:: the routing name for this paginator
|
25
|
+
# (defaults to +page+)
|
26
|
+
# <tt>:prefix</tt>:: prefix for pagination links
|
27
|
+
# (i.e. Older Pages: 1 2 3 4)
|
28
|
+
# <tt>:suffix</tt>:: suffix for pagination links
|
29
|
+
# (i.e. 1 2 3 4 <- Older Pages)
|
30
|
+
# <tt>:window_size</tt>:: the number of pages to show around
|
31
|
+
# the current page (defaults to <tt>2</tt>)
|
32
|
+
# <tt>:always_show_anchors</tt>:: whether or not the first and last
|
33
|
+
# pages should always be shown
|
34
|
+
# (defaults to +true+)
|
35
|
+
# <tt>:link_to_current_page</tt>:: whether or not the current page
|
36
|
+
# should be linked to (defaults to
|
37
|
+
# +false+)
|
38
|
+
# <tt>:params</tt>:: any additional routing parameters
|
39
|
+
# for page URLs
|
40
|
+
#
|
41
|
+
# ==== Examples
|
42
|
+
# # We'll assume we have a paginator setup in @person_pages...
|
43
|
+
#
|
44
|
+
# pagination_links(@person_pages)
|
45
|
+
# # => 1 <a href="/?page=2/">2</a> <a href="/?page=3/">3</a> ... <a href="/?page=10/">10</a>
|
46
|
+
#
|
47
|
+
# pagination_links(@person_pages, :link_to_current_page => true)
|
48
|
+
# # => <a href="/?page=1/">1</a> <a href="/?page=2/">2</a> <a href="/?page=3/">3</a> ... <a href="/?page=10/">10</a>
|
49
|
+
#
|
50
|
+
# pagination_links(@person_pages, :always_show_anchors => false)
|
51
|
+
# # => 1 <a href="/?page=2/">2</a> <a href="/?page=3/">3</a>
|
52
|
+
#
|
53
|
+
# pagination_links(@person_pages, :window_size => 1)
|
54
|
+
# # => 1 <a href="/?page=2/">2</a> ... <a href="/?page=10/">10</a>
|
55
|
+
#
|
56
|
+
# pagination_links(@person_pages, :params => { :viewer => "flash" })
|
57
|
+
# # => 1 <a href="/?page=2&viewer=flash/">2</a> <a href="/?page=3&viewer=flash/">3</a> ...
|
58
|
+
# # <a href="/?page=10&viewer=flash/">10</a>
|
59
|
+
def pagination_links(paginator, options={}, html_options={})
|
60
|
+
name = options[:name] || DEFAULT_OPTIONS[:name]
|
61
|
+
params = (options[:params] || DEFAULT_OPTIONS[:params]).clone
|
62
|
+
|
63
|
+
prefix = options[:prefix] || ''
|
64
|
+
suffix = options[:suffix] || ''
|
65
|
+
|
66
|
+
pagination_links_each(paginator, options, prefix, suffix) do |n|
|
67
|
+
params[name] = n
|
68
|
+
link_to(n.to_s, params, html_options)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# Iterate through the pages of a given +paginator+, invoking a
|
73
|
+
# block for each page number that needs to be rendered as a link.
|
74
|
+
#
|
75
|
+
# ==== Options
|
76
|
+
# <tt>:window_size</tt>:: the number of pages to show around
|
77
|
+
# the current page (defaults to +2+)
|
78
|
+
# <tt>:always_show_anchors</tt>:: whether or not the first and last
|
79
|
+
# pages should always be shown
|
80
|
+
# (defaults to +true+)
|
81
|
+
# <tt>:link_to_current_page</tt>:: whether or not the current page
|
82
|
+
# should be linked to (defaults to
|
83
|
+
# +false+)
|
84
|
+
#
|
85
|
+
# ==== Example
|
86
|
+
# # Turn paginated links into an Ajax call
|
87
|
+
# pagination_links_each(paginator, page_options) do |link|
|
88
|
+
# options = { :url => {:action => 'list'}, :update => 'results' }
|
89
|
+
# html_options = { :href => url_for(:action => 'list') }
|
90
|
+
#
|
91
|
+
# link_to_remote(link.to_s, options, html_options)
|
92
|
+
# end
|
93
|
+
def pagination_links_each(paginator, options, prefix = nil, suffix = nil)
|
94
|
+
options = DEFAULT_OPTIONS.merge(options)
|
95
|
+
link_to_current_page = options[:link_to_current_page]
|
96
|
+
always_show_anchors = options[:always_show_anchors]
|
97
|
+
|
98
|
+
current_page = paginator.current_page
|
99
|
+
window_pages = current_page.window(options[:window_size]).pages
|
100
|
+
return if window_pages.length <= 1 unless link_to_current_page
|
101
|
+
|
102
|
+
first, last = paginator.first, paginator.last
|
103
|
+
|
104
|
+
html = ''
|
105
|
+
|
106
|
+
html << prefix if prefix
|
107
|
+
|
108
|
+
if always_show_anchors and not (wp_first = window_pages[0]).first?
|
109
|
+
html << yield(first.number)
|
110
|
+
html << ' ... ' if wp_first.number - first.number > 1
|
111
|
+
html << ' '
|
112
|
+
end
|
113
|
+
|
114
|
+
window_pages.each do |page|
|
115
|
+
if current_page == page && !link_to_current_page
|
116
|
+
html << page.number.to_s
|
117
|
+
else
|
118
|
+
html << yield(page.number)
|
119
|
+
end
|
120
|
+
html << ' '
|
121
|
+
end
|
122
|
+
|
123
|
+
if always_show_anchors and not (wp_last = window_pages[-1]).last?
|
124
|
+
html << ' ... ' if last.number - wp_last.number > 1
|
125
|
+
html << yield(last.number)
|
126
|
+
end
|
127
|
+
|
128
|
+
html << suffix if suffix
|
129
|
+
|
130
|
+
html
|
131
|
+
end
|
132
|
+
|
133
|
+
end # PaginationHelper
|
134
|
+
end # Helpers
|
135
|
+
end # ActionView
|