Class: Searchkick::Relation
- Inherits:
-
Object
- Object
- Searchkick::Relation
- Defined in:
- lib/searchkick/relation.rb
Constant Summary collapse
- NO_DEFAULT_VALUE =
Object.new
Instance Attribute Summary collapse
-
#model ⇒ Object
(also: #klass)
readonly
Returns the value of attribute model.
Instance Method Summary collapse
- #aggs(value = NO_DEFAULT_VALUE) ⇒ Object
- #aggs!(value) ⇒ Object
- #body(value = NO_DEFAULT_VALUE) ⇒ Object
- #body!(value) ⇒ Object
- #body_options(value) ⇒ Object
- #body_options!(value) ⇒ Object
- #boost(value) ⇒ Object
- #boost!(value) ⇒ Object
- #boost_by(value) ⇒ Object
- #boost_by!(value) ⇒ Object
- #boost_by_distance(value) ⇒ Object
- #boost_by_distance!(value) ⇒ Object
- #boost_by_recency(value) ⇒ Object
- #boost_by_recency!(value) ⇒ Object
- #boost_where(value) ⇒ Object
- #boost_where!(value) ⇒ Object
- #conversions(value) ⇒ Object
- #conversions!(value) ⇒ Object
- #conversions_term(value) ⇒ Object
- #conversions_term!(value) ⇒ Object
- #conversions_v1(value) ⇒ Object
- #conversions_v1!(value) ⇒ Object
- #conversions_v2(value) ⇒ Object
- #conversions_v2!(value) ⇒ Object
- #debug(value = true) ⇒ Object
- #debug!(value = true) ⇒ Object
- #emoji(value = true) ⇒ Object
- #emoji!(value = true) ⇒ Object
- #except(*keys) ⇒ Object
- #exclude(*values) ⇒ Object
- #exclude!(*values) ⇒ Object
- #explain(value = true) ⇒ Object
- #explain!(value = true) ⇒ Object
- #fields(*values) ⇒ Object
- #fields!(*values) ⇒ Object
- #first(value = NO_DEFAULT_VALUE) ⇒ Object
- #highlight(value) ⇒ Object
- #highlight!(value) ⇒ Object
- #includes(*values) ⇒ Object
- #includes!(*values) ⇒ Object
- #index_name(*values) ⇒ Object
- #index_name!(*values) ⇒ Object
- #indices_boost(value) ⇒ Object
- #indices_boost!(value) ⇒ Object
-
#initialize(model, term = "*", **options) ⇒ Relation
constructor
A new instance of Relation.
-
#inspect ⇒ Object
same as Active Record.
- #knn(value) ⇒ Object
- #knn!(value) ⇒ Object
- #limit(value) ⇒ Object
- #limit!(value) ⇒ Object
- #load(value = NO_DEFAULT_VALUE) ⇒ Object
- #load!(value) ⇒ Object
- #loaded? ⇒ Boolean
- #match(value) ⇒ Object
- #match!(value) ⇒ Object
- #misspellings(value) ⇒ Object
- #misspellings!(value) ⇒ Object
- #model_includes(*values) ⇒ Object
- #model_includes!(*values) ⇒ Object
- #models(*values) ⇒ Object
- #models!(*values) ⇒ Object
- #offset(value = NO_DEFAULT_VALUE) ⇒ Object
- #offset!(value) ⇒ Object
- #only(*keys) ⇒ Object
- #opaque_id(value) ⇒ Object
- #opaque_id!(value) ⇒ Object
- #operator(value) ⇒ Object
- #operator!(value) ⇒ Object
- #order(*values) ⇒ Object
- #order!(*values) ⇒ Object
- #padding(value = NO_DEFAULT_VALUE) ⇒ Object
- #padding!(value) ⇒ Object
- #page(value) ⇒ Object
- #page!(value) ⇒ Object
- #per_page(value = NO_DEFAULT_VALUE) ⇒ Object
- #per_page!(value) ⇒ Object
- #pluck(*keys) ⇒ Object
- #profile(value = true) ⇒ Object
- #profile!(value = true) ⇒ Object
- #reorder(*values) ⇒ Object
- #reorder!(*values) ⇒ Object
- #request_params(value) ⇒ Object
- #request_params!(value) ⇒ Object
- #reselect(*values) ⇒ Object
- #reselect!(*values) ⇒ Object
- #respond_to_missing? ⇒ Boolean
- #rewhere(value) ⇒ Object
- #rewhere!(value) ⇒ Object
- #routing(value) ⇒ Object
- #routing!(value) ⇒ Object
- #scope_results(value) ⇒ Object
- #scope_results!(value) ⇒ Object
- #scroll(value = NO_DEFAULT_VALUE, &block) ⇒ Object
- #scroll!(value) ⇒ Object
- #select(*values, &block) ⇒ Object
- #select!(*values) ⇒ Object
- #similar(value = true) ⇒ Object
- #similar!(value = true) ⇒ Object
- #smart_aggs(value) ⇒ Object
- #smart_aggs!(value) ⇒ Object
- #suggest(value = true) ⇒ Object
- #suggest!(value = true) ⇒ Object
- #to_yaml ⇒ Object
- #total_entries(value = NO_DEFAULT_VALUE) ⇒ Object
- #total_entries!(value) ⇒ Object
- #track(value = true) ⇒ Object
- #track!(value = true) ⇒ Object
- #type(*values) ⇒ Object
- #type!(*values) ⇒ Object
- #where(value = NO_DEFAULT_VALUE) ⇒ Object
- #where!(value) ⇒ Object
Constructor Details
#initialize(model, term = "*", **options) ⇒ Relation
Returns a new instance of Relation.
14 15 16 17 18 19 20 21 |
# File 'lib/searchkick/relation.rb', line 14 def initialize(model, term = "*", **) @model = model @term = term @options = # generate query to validate options query end |
Instance Attribute Details
#model ⇒ Object (readonly) Also known as: klass
Returns the value of attribute model.
11 12 13 |
# File 'lib/searchkick/relation.rb', line 11 def model @model end |
Instance Method Details
#aggs(value = NO_DEFAULT_VALUE) ⇒ Object
30 31 32 33 34 35 36 |
# File 'lib/searchkick/relation.rb', line 30 def aggs(value = NO_DEFAULT_VALUE) if value == NO_DEFAULT_VALUE private_execute.aggs else clone.aggs!(value) end end |
#aggs!(value) ⇒ Object
38 39 40 41 42 |
# File 'lib/searchkick/relation.rb', line 38 def aggs!(value) check_loaded (@options[:aggs] ||= {}).merge!(value) self end |
#body(value = NO_DEFAULT_VALUE) ⇒ Object
44 45 46 47 48 49 50 |
# File 'lib/searchkick/relation.rb', line 44 def body(value = NO_DEFAULT_VALUE) if value == NO_DEFAULT_VALUE query.body else clone.body!(value) end end |
#body!(value) ⇒ Object
52 53 54 55 56 |
# File 'lib/searchkick/relation.rb', line 52 def body!(value) check_loaded @options[:body] = value self end |
#body_options(value) ⇒ Object
58 59 60 |
# File 'lib/searchkick/relation.rb', line 58 def (value) clone.(value) end |
#body_options!(value) ⇒ Object
62 63 64 65 66 |
# File 'lib/searchkick/relation.rb', line 62 def (value) check_loaded (@options[:body_options] ||= {}).merge!(value) self end |
#boost(value) ⇒ Object
68 69 70 |
# File 'lib/searchkick/relation.rb', line 68 def boost(value) clone.boost!(value) end |
#boost!(value) ⇒ Object
72 73 74 75 76 |
# File 'lib/searchkick/relation.rb', line 72 def boost!(value) check_loaded @options[:boost] = value self end |
#boost_by(value) ⇒ Object
78 79 80 |
# File 'lib/searchkick/relation.rb', line 78 def boost_by(value) clone.boost_by!(value) end |
#boost_by!(value) ⇒ Object
82 83 84 85 86 87 88 89 90 91 |
# File 'lib/searchkick/relation.rb', line 82 def boost_by!(value) check_loaded if value.is_a?(Array) value = value.to_h { |f| [f, {factor: 1}] } elsif !value.is_a?(Hash) value = {value => {factor: 1}} end (@options[:boost_by] ||= {}).merge!(value) self end |
#boost_by_distance(value) ⇒ Object
93 94 95 |
# File 'lib/searchkick/relation.rb', line 93 def boost_by_distance(value) clone.boost_by_distance!(value) end |
#boost_by_distance!(value) ⇒ Object
97 98 99 100 101 102 103 |
# File 'lib/searchkick/relation.rb', line 97 def boost_by_distance!(value) check_loaded # legacy format value = {value[:field] => value.except(:field)} if value[:field] (@options[:boost_by_distance] ||= {}).merge!(value) self end |
#boost_by_recency(value) ⇒ Object
105 106 107 |
# File 'lib/searchkick/relation.rb', line 105 def boost_by_recency(value) clone.boost_by_recency!(value) end |
#boost_by_recency!(value) ⇒ Object
109 110 111 112 113 |
# File 'lib/searchkick/relation.rb', line 109 def boost_by_recency!(value) check_loaded (@options[:boost_by_recency] ||= {}).merge!(value) self end |
#boost_where(value) ⇒ Object
115 116 117 |
# File 'lib/searchkick/relation.rb', line 115 def boost_where(value) clone.boost_where!(value) end |
#boost_where!(value) ⇒ Object
119 120 121 122 123 124 |
# File 'lib/searchkick/relation.rb', line 119 def boost_where!(value) check_loaded # TODO merge duplicate fields (@options[:boost_where] ||= {}).merge!(value) self end |
#conversions(value) ⇒ Object
126 127 128 |
# File 'lib/searchkick/relation.rb', line 126 def conversions(value) clone.conversions!(value) end |
#conversions!(value) ⇒ Object
130 131 132 133 134 |
# File 'lib/searchkick/relation.rb', line 130 def conversions!(value) check_loaded @options[:conversions] = value self end |
#conversions_term(value) ⇒ Object
156 157 158 |
# File 'lib/searchkick/relation.rb', line 156 def conversions_term(value) clone.conversions_term!(value) end |
#conversions_term!(value) ⇒ Object
160 161 162 163 164 |
# File 'lib/searchkick/relation.rb', line 160 def conversions_term!(value) check_loaded @options[:conversions_term] = value self end |
#conversions_v1(value) ⇒ Object
136 137 138 |
# File 'lib/searchkick/relation.rb', line 136 def conversions_v1(value) clone.conversions_v1!(value) end |
#conversions_v1!(value) ⇒ Object
140 141 142 143 144 |
# File 'lib/searchkick/relation.rb', line 140 def conversions_v1!(value) check_loaded @options[:conversions_v1] = value self end |
#conversions_v2(value) ⇒ Object
146 147 148 |
# File 'lib/searchkick/relation.rb', line 146 def conversions_v2(value) clone.conversions_v2!(value) end |
#conversions_v2!(value) ⇒ Object
150 151 152 153 154 |
# File 'lib/searchkick/relation.rb', line 150 def conversions_v2!(value) check_loaded @options[:conversions_v2] = value self end |
#debug(value = true) ⇒ Object
166 167 168 |
# File 'lib/searchkick/relation.rb', line 166 def debug(value = true) clone.debug!(value) end |
#debug!(value = true) ⇒ Object
170 171 172 173 174 |
# File 'lib/searchkick/relation.rb', line 170 def debug!(value = true) check_loaded @options[:debug] = value self end |
#emoji(value = true) ⇒ Object
176 177 178 |
# File 'lib/searchkick/relation.rb', line 176 def emoji(value = true) clone.emoji!(value) end |
#emoji!(value = true) ⇒ Object
180 181 182 183 184 |
# File 'lib/searchkick/relation.rb', line 180 def emoji!(value = true) check_loaded @options[:emoji] = value self end |
#except(*keys) ⇒ Object
633 634 635 |
# File 'lib/searchkick/relation.rb', line 633 def except(*keys) Relation.new(@model, @term, **@options.except(*keys)) end |
#exclude(*values) ⇒ Object
186 187 188 |
# File 'lib/searchkick/relation.rb', line 186 def exclude(*values) clone.exclude!(*values) end |
#exclude!(*values) ⇒ Object
190 191 192 193 194 |
# File 'lib/searchkick/relation.rb', line 190 def exclude!(*values) check_loaded (@options[:exclude] ||= []).concat(values.flatten) self end |
#explain(value = true) ⇒ Object
196 197 198 |
# File 'lib/searchkick/relation.rb', line 196 def explain(value = true) clone.explain!(value) end |
#explain!(value = true) ⇒ Object
200 201 202 203 204 |
# File 'lib/searchkick/relation.rb', line 200 def explain!(value = true) check_loaded @options[:explain] = value self end |
#fields(*values) ⇒ Object
206 207 208 |
# File 'lib/searchkick/relation.rb', line 206 def fields(*values) clone.fields!(*values) end |
#fields!(*values) ⇒ Object
210 211 212 213 214 |
# File 'lib/searchkick/relation.rb', line 210 def fields!(*values) check_loaded (@options[:fields] ||= []).concat(values.flatten) self end |
#first(value = NO_DEFAULT_VALUE) ⇒ Object
571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 |
# File 'lib/searchkick/relation.rb', line 571 def first(value = NO_DEFAULT_VALUE) result = if loaded? private_execute else limit = value == NO_DEFAULT_VALUE ? 1 : value previous_limit = (@options[:limit] || @options[:per_page])&.to_i if previous_limit && previous_limit < limit limit = previous_limit end limit(limit).load end if value == NO_DEFAULT_VALUE result.first else result.first(value) end end |
#highlight(value) ⇒ Object
216 217 218 |
# File 'lib/searchkick/relation.rb', line 216 def highlight(value) clone.highlight!(value) end |
#highlight!(value) ⇒ Object
220 221 222 223 224 |
# File 'lib/searchkick/relation.rb', line 220 def highlight!(value) check_loaded @options[:highlight] = value self end |
#includes(*values) ⇒ Object
226 227 228 |
# File 'lib/searchkick/relation.rb', line 226 def includes(*values) clone.includes!(*values) end |
#includes!(*values) ⇒ Object
230 231 232 233 234 |
# File 'lib/searchkick/relation.rb', line 230 def includes!(*values) check_loaded (@options[:includes] ||= []).concat(values.flatten) self end |
#index_name(*values) ⇒ Object
236 237 238 |
# File 'lib/searchkick/relation.rb', line 236 def index_name(*values) clone.index_name!(*values) end |
#index_name!(*values) ⇒ Object
240 241 242 243 244 245 246 247 248 249 |
# File 'lib/searchkick/relation.rb', line 240 def index_name!(*values) check_loaded values = values.flatten if values.all? { |v| v.respond_to?(:searchkick_index) } models!(*values) else (@options[:index_name] ||= []).concat(values) self end end |
#indices_boost(value) ⇒ Object
251 252 253 |
# File 'lib/searchkick/relation.rb', line 251 def indices_boost(value) clone.indices_boost!(value) end |
#indices_boost!(value) ⇒ Object
255 256 257 258 259 |
# File 'lib/searchkick/relation.rb', line 255 def indices_boost!(value) check_loaded (@options[:indices_boost] ||= {}).merge!(value) self end |
#inspect ⇒ Object
same as Active Record
24 25 26 27 28 |
# File 'lib/searchkick/relation.rb', line 24 def inspect entries = results.first(11).map!(&:inspect) entries[10] = "..." if entries.size == 11 "#<#{self.class.name} [#{entries.join(', ')}]>" end |
#knn(value) ⇒ Object
261 262 263 |
# File 'lib/searchkick/relation.rb', line 261 def knn(value) clone.knn!(value) end |
#knn!(value) ⇒ Object
265 266 267 268 269 |
# File 'lib/searchkick/relation.rb', line 265 def knn!(value) check_loaded @options[:knn] = value self end |
#limit(value) ⇒ Object
271 272 273 |
# File 'lib/searchkick/relation.rb', line 271 def limit(value) clone.limit!(value) end |
#limit!(value) ⇒ Object
275 276 277 278 279 |
# File 'lib/searchkick/relation.rb', line 275 def limit!(value) check_loaded @options[:limit] = value self end |
#load(value = NO_DEFAULT_VALUE) ⇒ Object
281 282 283 284 285 286 287 288 |
# File 'lib/searchkick/relation.rb', line 281 def load(value = NO_DEFAULT_VALUE) if value == NO_DEFAULT_VALUE private_execute self else clone.load!(value) end end |
#load!(value) ⇒ Object
290 291 292 293 294 |
# File 'lib/searchkick/relation.rb', line 290 def load!(value) check_loaded @options[:load] = value self end |
#loaded? ⇒ Boolean
637 638 639 |
# File 'lib/searchkick/relation.rb', line 637 def loaded? !@execute.nil? end |
#match(value) ⇒ Object
296 297 298 |
# File 'lib/searchkick/relation.rb', line 296 def match(value) clone.match!(value) end |
#match!(value) ⇒ Object
300 301 302 303 304 |
# File 'lib/searchkick/relation.rb', line 300 def match!(value) check_loaded @options[:match] = value self end |
#misspellings(value) ⇒ Object
306 307 308 |
# File 'lib/searchkick/relation.rb', line 306 def misspellings(value) clone.misspellings!(value) end |
#misspellings!(value) ⇒ Object
310 311 312 313 314 |
# File 'lib/searchkick/relation.rb', line 310 def misspellings!(value) check_loaded @options[:misspellings] = value self end |
#model_includes(*values) ⇒ Object
326 327 328 |
# File 'lib/searchkick/relation.rb', line 326 def model_includes(*values) clone.model_includes!(*values) end |
#model_includes!(*values) ⇒ Object
330 331 332 333 334 |
# File 'lib/searchkick/relation.rb', line 330 def model_includes!(*values) check_loaded (@options[:model_includes] ||= []).concat(values.flatten) self end |
#models(*values) ⇒ Object
316 317 318 |
# File 'lib/searchkick/relation.rb', line 316 def models(*values) clone.models!(*values) end |
#models!(*values) ⇒ Object
320 321 322 323 324 |
# File 'lib/searchkick/relation.rb', line 320 def models!(*values) check_loaded (@options[:models] ||= []).concat(values.flatten) self end |
#offset(value = NO_DEFAULT_VALUE) ⇒ Object
336 337 338 339 340 341 342 |
# File 'lib/searchkick/relation.rb', line 336 def offset(value = NO_DEFAULT_VALUE) if value == NO_DEFAULT_VALUE private_execute.offset else clone.offset!(value) end end |
#offset!(value) ⇒ Object
344 345 346 347 348 |
# File 'lib/searchkick/relation.rb', line 344 def offset!(value) check_loaded @options[:offset] = value self end |
#only(*keys) ⇒ Object
629 630 631 |
# File 'lib/searchkick/relation.rb', line 629 def only(*keys) Relation.new(@model, @term, **@options.slice(*keys)) end |
#opaque_id(value) ⇒ Object
350 351 352 |
# File 'lib/searchkick/relation.rb', line 350 def opaque_id(value) clone.opaque_id!(value) end |
#opaque_id!(value) ⇒ Object
354 355 356 357 358 |
# File 'lib/searchkick/relation.rb', line 354 def opaque_id!(value) check_loaded @options[:opaque_id] = value self end |
#operator(value) ⇒ Object
360 361 362 |
# File 'lib/searchkick/relation.rb', line 360 def operator(value) clone.operator!(value) end |
#operator!(value) ⇒ Object
364 365 366 367 368 |
# File 'lib/searchkick/relation.rb', line 364 def operator!(value) check_loaded @options[:operator] = value self end |
#order(*values) ⇒ Object
370 371 372 |
# File 'lib/searchkick/relation.rb', line 370 def order(*values) clone.order!(*values) end |
#order!(*values) ⇒ Object
374 375 376 377 378 |
# File 'lib/searchkick/relation.rb', line 374 def order!(*values) check_loaded (@options[:order] ||= []).concat(values.flatten) self end |
#padding(value = NO_DEFAULT_VALUE) ⇒ Object
380 381 382 383 384 385 386 |
# File 'lib/searchkick/relation.rb', line 380 def padding(value = NO_DEFAULT_VALUE) if value == NO_DEFAULT_VALUE private_execute.padding else clone.padding!(value) end end |
#padding!(value) ⇒ Object
388 389 390 391 392 |
# File 'lib/searchkick/relation.rb', line 388 def padding!(value) check_loaded @options[:padding] = value self end |
#page(value) ⇒ Object
394 395 396 |
# File 'lib/searchkick/relation.rb', line 394 def page(value) clone.page!(value) end |
#page!(value) ⇒ Object
398 399 400 401 402 |
# File 'lib/searchkick/relation.rb', line 398 def page!(value) check_loaded @options[:page] = value self end |
#per_page(value = NO_DEFAULT_VALUE) ⇒ Object
404 405 406 407 408 409 410 |
# File 'lib/searchkick/relation.rb', line 404 def per_page(value = NO_DEFAULT_VALUE) if value == NO_DEFAULT_VALUE private_execute.per_page else clone.per_page!(value) end end |
#per_page!(value) ⇒ Object
412 413 414 415 416 417 |
# File 'lib/searchkick/relation.rb', line 412 def per_page!(value) check_loaded # TODO set limit? @options[:per_page] = value self end |
#pluck(*keys) ⇒ Object
591 592 593 594 595 596 597 |
# File 'lib/searchkick/relation.rb', line 591 def pluck(*keys) if !loaded? && @options[:load] == false select(*keys).send(:private_execute).pluck(*keys) else private_execute.pluck(*keys) end end |
#profile(value = true) ⇒ Object
419 420 421 |
# File 'lib/searchkick/relation.rb', line 419 def profile(value = true) clone.profile!(value) end |
#profile!(value = true) ⇒ Object
423 424 425 426 427 |
# File 'lib/searchkick/relation.rb', line 423 def profile!(value = true) check_loaded @options[:profile] = value self end |
#reorder(*values) ⇒ Object
599 600 601 |
# File 'lib/searchkick/relation.rb', line 599 def reorder(*values) clone.reorder!(*values) end |
#reorder!(*values) ⇒ Object
603 604 605 606 607 |
# File 'lib/searchkick/relation.rb', line 603 def reorder!(*values) check_loaded @options[:order] = values self end |
#request_params(value) ⇒ Object
429 430 431 |
# File 'lib/searchkick/relation.rb', line 429 def request_params(value) clone.request_params!(value) end |
#request_params!(value) ⇒ Object
433 434 435 436 437 |
# File 'lib/searchkick/relation.rb', line 433 def request_params!(value) check_loaded (@options[:request_params] ||= {}).merge!(value) self end |
#reselect(*values) ⇒ Object
609 610 611 |
# File 'lib/searchkick/relation.rb', line 609 def reselect(*values) clone.reselect!(*values) end |
#reselect!(*values) ⇒ Object
613 614 615 616 617 |
# File 'lib/searchkick/relation.rb', line 613 def reselect!(*values) check_loaded @options[:select] = values self end |
#respond_to_missing? ⇒ Boolean
643 644 645 |
# File 'lib/searchkick/relation.rb', line 643 def respond_to_missing?(...) Results.new(nil, nil, nil).respond_to?(...) || super end |
#rewhere(value) ⇒ Object
619 620 621 |
# File 'lib/searchkick/relation.rb', line 619 def rewhere(value) clone.rewhere!(value) end |
#rewhere!(value) ⇒ Object
623 624 625 626 627 |
# File 'lib/searchkick/relation.rb', line 623 def rewhere!(value) check_loaded @options[:where] = ensure_permitted(value) self end |
#routing(value) ⇒ Object
439 440 441 |
# File 'lib/searchkick/relation.rb', line 439 def routing(value) clone.routing!(value) end |
#routing!(value) ⇒ Object
443 444 445 446 447 |
# File 'lib/searchkick/relation.rb', line 443 def routing!(value) check_loaded @options[:routing] = value self end |
#scope_results(value) ⇒ Object
449 450 451 |
# File 'lib/searchkick/relation.rb', line 449 def scope_results(value) clone.scope_results!(value) end |
#scope_results!(value) ⇒ Object
453 454 455 456 457 |
# File 'lib/searchkick/relation.rb', line 453 def scope_results!(value) check_loaded @options[:scope_results] = value self end |
#scroll(value = NO_DEFAULT_VALUE, &block) ⇒ Object
459 460 461 462 463 464 465 466 467 |
# File 'lib/searchkick/relation.rb', line 459 def scroll(value = NO_DEFAULT_VALUE, &block) if value == NO_DEFAULT_VALUE private_execute.scroll(&block) elsif block_given? clone.scroll!(value).scroll(&block) else clone.scroll!(value) end end |
#scroll!(value) ⇒ Object
469 470 471 472 473 |
# File 'lib/searchkick/relation.rb', line 469 def scroll!(value) check_loaded @options[:scroll] = value self end |
#select(*values, &block) ⇒ Object
475 476 477 478 479 480 481 |
# File 'lib/searchkick/relation.rb', line 475 def select(*values, &block) if block_given? private_execute.select(*values, &block) else clone.select!(*values) end end |
#select!(*values) ⇒ Object
483 484 485 486 487 |
# File 'lib/searchkick/relation.rb', line 483 def select!(*values) check_loaded (@options[:select] ||= []).concat(values.flatten) self end |
#similar(value = true) ⇒ Object
489 490 491 |
# File 'lib/searchkick/relation.rb', line 489 def similar(value = true) clone.similar!(value) end |
#similar!(value = true) ⇒ Object
493 494 495 496 497 |
# File 'lib/searchkick/relation.rb', line 493 def similar!(value = true) check_loaded @options[:similar] = value self end |
#smart_aggs(value) ⇒ Object
499 500 501 |
# File 'lib/searchkick/relation.rb', line 499 def smart_aggs(value) clone.smart_aggs!(value) end |
#smart_aggs!(value) ⇒ Object
503 504 505 506 507 |
# File 'lib/searchkick/relation.rb', line 503 def smart_aggs!(value) check_loaded @options[:smart_aggs] = value self end |
#suggest(value = true) ⇒ Object
509 510 511 |
# File 'lib/searchkick/relation.rb', line 509 def suggest(value = true) clone.suggest!(value) end |
#suggest!(value = true) ⇒ Object
513 514 515 516 517 |
# File 'lib/searchkick/relation.rb', line 513 def suggest!(value = true) check_loaded @options[:suggest] = value self end |
#to_yaml ⇒ Object
647 648 649 |
# File 'lib/searchkick/relation.rb', line 647 def to_yaml private_execute.to_a.to_yaml end |
#total_entries(value = NO_DEFAULT_VALUE) ⇒ Object
519 520 521 522 523 524 525 |
# File 'lib/searchkick/relation.rb', line 519 def total_entries(value = NO_DEFAULT_VALUE) if value == NO_DEFAULT_VALUE private_execute.total_entries else clone.total_entries!(value) end end |
#total_entries!(value) ⇒ Object
527 528 529 530 531 |
# File 'lib/searchkick/relation.rb', line 527 def total_entries!(value) check_loaded @options[:total_entries] = value self end |
#track(value = true) ⇒ Object
533 534 535 |
# File 'lib/searchkick/relation.rb', line 533 def track(value = true) clone.track!(value) end |
#track!(value = true) ⇒ Object
537 538 539 540 541 |
# File 'lib/searchkick/relation.rb', line 537 def track!(value = true) check_loaded @options[:track] = value self end |
#type(*values) ⇒ Object
543 544 545 |
# File 'lib/searchkick/relation.rb', line 543 def type(*values) clone.type!(*values) end |
#type!(*values) ⇒ Object
547 548 549 550 551 |
# File 'lib/searchkick/relation.rb', line 547 def type!(*values) check_loaded (@options[:type] ||= []).concat(values.flatten) self end |
#where(value = NO_DEFAULT_VALUE) ⇒ Object
553 554 555 556 557 558 559 |
# File 'lib/searchkick/relation.rb', line 553 def where(value = NO_DEFAULT_VALUE) if value == NO_DEFAULT_VALUE Where.new(self) else clone.where!(value) end end |
#where!(value) ⇒ Object
561 562 563 564 565 566 567 568 569 |
# File 'lib/searchkick/relation.rb', line 561 def where!(value) check_loaded if @options[:where] @options[:where] = {_and: [@options[:where], ensure_permitted(value)]} else @options[:where] = ensure_permitted(value) end self end |