Class: RecordSelect::Config
Overview
a write-once configuration object
Class Method Summary collapse
Instance Method Summary collapse
- #full_text_search? ⇒ Boolean
- #include ⇒ Object
-
#initialize(klass, options = {}) ⇒ Config
constructor
A new instance of Config.
-
#label ⇒ Object
If a proc, must accept the record as an argument and return a descriptive string.
-
#model ⇒ Object
The model object we’re browsing.
-
#notify ⇒ Object
The method name or proc to notify of a selection event.
- #order_by ⇒ Object
- #pagination? ⇒ Boolean
-
#per_page ⇒ Object
Records to show on a page.
-
#search_on ⇒ Object
A collection of fields to search.
Constructor Details
#initialize(klass, options = {}) ⇒ Config
Returns a new instance of Config.
4 5 6 7 8 9 10 11 12 13 14 |
# File 'lib/record_select/config.rb', line 4 def initialize(klass, = {}) @klass = klass @notify = block_given? ? proc : [:notify] @per_page = [:per_page] @search_on = [[:search_on]].flatten unless [:search_on].nil? @order_by = [:order_by] @full_text_search = [:full_text_search] @label = [:label] @include = [:include] @pagination = .include?(:pagination) ? [:pagination] : true end |
Class Method Details
.js_framework ⇒ Object
20 21 22 23 24 25 26 |
# File 'lib/record_select/config.rb', line 20 def self.js_framework @@js_framework ||= if defined? Jquery :jquery elsif defined? PrototypeRails :prototype end end |
.js_framework=(framework) ⇒ Object
16 17 18 |
# File 'lib/record_select/config.rb', line 16 def self.js_framework=(framework) @@js_framework = framework end |
Instance Method Details
#full_text_search? ⇒ Boolean
58 59 60 |
# File 'lib/record_select/config.rb', line 58 def full_text_search? @full_text_search ? true : false end |
#include ⇒ Object
62 63 64 |
# File 'lib/record_select/config.rb', line 62 def include @include end |
#label ⇒ Object
If a proc, must accept the record as an argument and return a descriptive string.
If a symbol or string, must name a partial that renders a representation of the record. The partial should assume a local “record” variable, and should include a <label> tag, even if it’s not visible. The contents of the <label> tag will be used to represent the record once it has been selected. For example:
record_select_config.label = :user_description
> app/views/users/_user_description.erb
<div class="user_description">
<%= image_tag url_for_file_column(record, 'avatar') %>
<label><%= record.username %></label>
<p><%= record.quote %></p>
</div>
83 84 85 |
# File 'lib/record_select/config.rb', line 83 def label @label ||= proc {|r| r.to_label} end |
#model ⇒ Object
The model object we’re browsing
33 34 35 |
# File 'lib/record_select/config.rb', line 33 def model @model ||= klass.to_s.camelcase.constantize end |
#notify ⇒ Object
The method name or proc to notify of a selection event. May not matter if the selection event is intercepted client-side.
44 45 46 |
# File 'lib/record_select/config.rb', line 44 def notify @notify end |
#order_by ⇒ Object
54 55 56 |
# File 'lib/record_select/config.rb', line 54 def order_by @order_by ||= "#{model.table_name}.#{model.primary_key} ASC" unless @order_by == false end |
#pagination? ⇒ Boolean
28 29 30 |
# File 'lib/record_select/config.rb', line 28 def pagination? @pagination end |
#per_page ⇒ Object
Records to show on a page
38 39 40 |
# File 'lib/record_select/config.rb', line 38 def per_page @per_page ||= 10 end |
#search_on ⇒ Object
A collection of fields to search. This is essentially raw SQL, so you could search on “CONCAT(first_name, ‘ ’, last_name)” if you wanted to. NOTE: this does NO default transforms (such as LOWER()), that’s left entirely up to you.
50 51 52 |
# File 'lib/record_select/config.rb', line 50 def search_on @search_on ||= self.model.columns.collect{|c| c.name if [:text, :string].include? c.type}.compact end |