meta_search 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,11 @@
1
+ Changes since 1.0.1 (2011-01-18):
2
+ * Include all non-boolean types in is_present and is_blank, to match
3
+ documentation
4
+ * Avoid setting alias to collection_check_boxes and check_boxes against
5
+ the base. Fixes issues with SimpleForm compatibility.
6
+ * Delegate page method to relation, for Kaminari support.
7
+ * Don't check for existence of attributes if the table doesn't exist yet.
8
+
1
9
  Changes since 1.0.0 (2011-01-17):
2
10
  * Update polymorphic join support to play nicely with MetaWhere
3
11
 
data/README.rdoc CHANGED
@@ -33,7 +33,7 @@ In your view:
33
33
  <%= f.submit %>
34
34
  <% end %>
35
35
 
36
- Options for the search method are documented at MetaSearch::Searches::Base.
36
+ Options for the search method are documented at MetaSearch::Searches::ActiveRecord.
37
37
 
38
38
  == "Wheres", and what they're good for
39
39
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.1
1
+ 1.0.2
@@ -8,10 +8,8 @@ module MetaSearch
8
8
 
9
9
  def self.included(base)
10
10
  # Only take on the check_boxes method names if someone else (Hi, José!) hasn't grabbed them.
11
- base.class_eval do
12
- alias_method :check_boxes, :checks unless method_defined?(:check_boxes)
13
- alias_method :collection_check_boxes, :collection_checks unless method_defined?(:collection_check_boxes)
14
- end
11
+ alias_method :check_boxes, :checks unless method_defined?(:check_boxes)
12
+ alias_method :collection_check_boxes, :collection_checks unless method_defined?(:collection_check_boxes)
15
13
  end
16
14
 
17
15
  # Like other form_for field methods (text_field, hidden_field, password_field) etc,
@@ -27,7 +27,7 @@ module MetaSearch
27
27
  case associations
28
28
  when Symbol, String
29
29
  reflection = parent.reflections[associations.to_s.intern] or
30
- raise ConfigurationError, "Association named '#{ association }' was not found; perhaps you misspelled it?"
30
+ raise ConfigurationError, "Association named '#{ associations }' was not found; perhaps you misspelled it?"
31
31
  unless (association = find_join_association(reflection, parent)) && (!polymorphic_class || association.active_record == polymorphic_class)
32
32
  @reflections << reflection
33
33
  if reflection.options[:polymorphic]
@@ -27,6 +27,17 @@ module MetaSearch
27
27
  # MetaSearch::Builder, which behaves pretty much like an ActiveRecord::Relation,
28
28
  # in that it doesn't actually query the database until you do something that
29
29
  # requires it to do so.
30
+ #
31
+ # Options:
32
+ #
33
+ # * +params+ - a hash of valid searches with keys that are valid according to
34
+ # the docs in MetaSearch::Where.
35
+ # * +opts+ - A hash of additional information that will be passed through to
36
+ # the search's Builder object. +search_key+, if present, will override the
37
+ # default param name, 'search', in any sort_links generated by this Builder.
38
+ # All other keys are passed untouched to the builder, and available from the
39
+ # Builder's +options+ reader for use in :if blocks supplied to attr_searchable
40
+ # and friends.
30
41
  def metasearch(params = nil, opts = nil)
31
42
  builder = Searches.for(self).new(self, opts || {})
32
43
  builder.build(params || {})
@@ -67,15 +78,17 @@ module MetaSearch
67
78
  # like <tt>:user_id_equals</tt>, nor will an Article.search accept the parameter
68
79
  # <tt>:comments_user_id_equals</tt>.
69
80
  def attr_unsearchable(*args)
70
- opts = args.extract_options!
71
- args.flatten.each do |attr|
72
- attr = attr.to_s
73
- raise(ArgumentError, "No persisted attribute (column) named #{attr} in #{self}") unless self.columns_hash.has_key?(attr)
74
- self._metasearch_exclude_attributes = self._metasearch_exclude_attributes.merge(
75
- attr => {
76
- :if => opts[:if]
77
- }
78
- )
81
+ if table_exists?
82
+ opts = args.extract_options!
83
+ args.flatten.each do |attr|
84
+ attr = attr.to_s
85
+ raise(ArgumentError, "No persisted attribute (column) named #{attr} in #{self}") unless self.columns_hash.has_key?(attr)
86
+ self._metasearch_exclude_attributes = self._metasearch_exclude_attributes.merge(
87
+ attr => {
88
+ :if => opts[:if]
89
+ }
90
+ )
91
+ end
79
92
  end
80
93
  end
81
94
 
@@ -83,15 +96,17 @@ module MetaSearch
83
96
  # <tt>attr_searchable</tt> and <tt>attr_unsearchable</tt> are present, the latter
84
97
  # is ignored.
85
98
  def attr_searchable(*args)
86
- opts = args.extract_options!
87
- args.flatten.each do |attr|
88
- attr = attr.to_s
89
- raise(ArgumentError, "No persisted attribute (column) named #{attr} in #{self}") unless self.columns_hash.has_key?(attr)
90
- self._metasearch_include_attributes = self._metasearch_include_attributes.merge(
91
- attr => {
92
- :if => opts[:if]
93
- }
94
- )
99
+ if table_exists?
100
+ opts = args.extract_options!
101
+ args.flatten.each do |attr|
102
+ attr = attr.to_s
103
+ raise(ArgumentError, "No persisted attribute (column) named #{attr} in #{self}") unless self.columns_hash.has_key?(attr)
104
+ self._metasearch_include_attributes = self._metasearch_include_attributes.merge(
105
+ attr => {
106
+ :if => opts[:if]
107
+ }
108
+ )
109
+ end
95
110
  end
96
111
  end
97
112
 
data/lib/meta_search.rb CHANGED
@@ -26,8 +26,8 @@ module MetaSearch
26
26
  ['not_in', 'ni', 'not_in', {:types => ALL_TYPES, :predicate => :not_in}],
27
27
  ['is_true', {:types => BOOLEANS, :skip_compounds => true}],
28
28
  ['is_false', {:types => BOOLEANS, :skip_compounds => true, :formatter => Proc.new {|param| !param}}],
29
- ['is_present', {:types => (NUMBERS + STRINGS), :predicate => :not_eq_all, :skip_compounds => true, :cast => :boolean, :formatter => Proc.new {|param| [nil, '']}}],
30
- ['is_blank', {:types => (NUMBERS + STRINGS), :predicate => :eq_any, :skip_compounds => true, :cast => :boolean, :formatter => Proc.new {|param| [nil, '']}}],
29
+ ['is_present', {:types => (ALL_TYPES - BOOLEANS), :predicate => :not_eq_all, :skip_compounds => true, :cast => :boolean, :formatter => Proc.new {|param| [nil, '']}}],
30
+ ['is_blank', {:types => (ALL_TYPES - BOOLEANS), :predicate => :eq_any, :skip_compounds => true, :cast => :boolean, :formatter => Proc.new {|param| [nil, '']}}],
31
31
  ['is_null', {:types => ALL_TYPES, :skip_compounds => true, :cast => :boolean, :formatter => Proc.new {|param| nil}}],
32
32
  ['is_not_null', {:types => ALL_TYPES, :predicate => :not_eq, :skip_compounds => true, :cast => :boolean, :formatter => Proc.new {|param| nil}}]
33
33
  ]
@@ -36,7 +36,7 @@ module MetaSearch
36
36
  # Query construction
37
37
  :joins, :includes, :select, :order, :where, :having, :group,
38
38
  # Results, debug, array methods
39
- :to_a, :all, :length, :size, :to_sql, :debug_sql, :paginate,
39
+ :to_a, :all, :length, :size, :to_sql, :debug_sql, :paginate, :page,
40
40
  :find_each, :first, :last, :each, :arel, :in_groups_of, :group_by,
41
41
  # Calculations
42
42
  :count, :average, :minimum, :maximum, :sum
data/meta_search.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{meta_search}
8
- s.version = "1.0.1"
8
+ s.version = "1.0.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ernie Miller"]
12
- s.date = %q{2011-01-18}
12
+ s.date = %q{2011-03-14}
13
13
  s.description = %q{
14
14
  Allows simple search forms to be created against an AR3 model
15
15
  and its associations, has useful view helpers for sort links
@@ -71,7 +71,7 @@ you're feeling especially appreciative. It'd help me justify this
71
71
 
72
72
  }
73
73
  s.require_paths = ["lib"]
74
- s.rubygems_version = %q{1.3.7}
74
+ s.rubygems_version = %q{1.5.3}
75
75
  s.summary = %q{Object-based searching (and more) for simply creating search forms.}
76
76
  s.test_files = [
77
77
  "test/fixtures/company.rb",
@@ -86,7 +86,6 @@ you're feeling especially appreciative. It'd help me justify this
86
86
  ]
87
87
 
88
88
  if s.respond_to? :specification_version then
89
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
90
89
  s.specification_version = 3
91
90
 
92
91
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meta_search
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 1
7
- - 0
8
- - 1
9
- version: 1.0.1
4
+ prerelease:
5
+ version: 1.0.2
10
6
  platform: ruby
11
7
  authors:
12
8
  - Ernie Miller
@@ -14,7 +10,7 @@ autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
12
 
17
- date: 2011-01-18 00:00:00 -05:00
13
+ date: 2011-03-14 00:00:00 -04:00
18
14
  default_executable:
19
15
  dependencies:
20
16
  - !ruby/object:Gem::Dependency
@@ -25,8 +21,6 @@ dependencies:
25
21
  requirements:
26
22
  - - ">="
27
23
  - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
24
  version: "0"
31
25
  type: :development
32
26
  version_requirements: *id001
@@ -38,10 +32,6 @@ dependencies:
38
32
  requirements:
39
33
  - - ~>
40
34
  - !ruby/object:Gem::Version
41
- segments:
42
- - 3
43
- - 0
44
- - 2
45
35
  version: 3.0.2
46
36
  type: :runtime
47
37
  version_requirements: *id002
@@ -53,10 +43,6 @@ dependencies:
53
43
  requirements:
54
44
  - - ~>
55
45
  - !ruby/object:Gem::Version
56
- segments:
57
- - 3
58
- - 0
59
- - 2
60
46
  version: 3.0.2
61
47
  type: :runtime
62
48
  version_requirements: *id003
@@ -68,10 +54,6 @@ dependencies:
68
54
  requirements:
69
55
  - - ~>
70
56
  - !ruby/object:Gem::Version
71
- segments:
72
- - 3
73
- - 0
74
- - 2
75
57
  version: 3.0.2
76
58
  type: :runtime
77
59
  version_requirements: *id004
@@ -83,10 +65,6 @@ dependencies:
83
65
  requirements:
84
66
  - - ~>
85
67
  - !ruby/object:Gem::Version
86
- segments:
87
- - 2
88
- - 0
89
- - 2
90
68
  version: 2.0.2
91
69
  type: :runtime
92
70
  version_requirements: *id005
@@ -158,21 +136,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
158
136
  requirements:
159
137
  - - ">="
160
138
  - !ruby/object:Gem::Version
161
- segments:
162
- - 0
163
139
  version: "0"
164
140
  required_rubygems_version: !ruby/object:Gem::Requirement
165
141
  none: false
166
142
  requirements:
167
143
  - - ">="
168
144
  - !ruby/object:Gem::Version
169
- segments:
170
- - 0
171
145
  version: "0"
172
146
  requirements: []
173
147
 
174
148
  rubyforge_project:
175
- rubygems_version: 1.3.7
149
+ rubygems_version: 1.5.3
176
150
  signing_key:
177
151
  specification_version: 3
178
152
  summary: Object-based searching (and more) for simply creating search forms.