Class: RecordSelect::Config
Overview
a write-once configuration object
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
-
#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 15 16 17 18 19 20 |
# 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 @order_by = [:order_by] @full_text_search = [:full_text_search] @label = [:label] @include = [:include] end |
Instance Method Details
#full_text_search? ⇒ Boolean
48 49 50 |
# File 'lib/record_select/config.rb', line 48 def full_text_search? @full_text_search ? true : false end |
#include ⇒ Object
52 53 54 |
# File 'lib/record_select/config.rb', line 52 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>
73 74 75 |
# File 'lib/record_select/config.rb', line 73 def label @label ||= proc {|r| r.to_label} end |
#model ⇒ Object
The model object we’re browsing
23 24 25 |
# File 'lib/record_select/config.rb', line 23 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.
34 35 36 |
# File 'lib/record_select/config.rb', line 34 def notify @notify end |
#order_by ⇒ Object
44 45 46 |
# File 'lib/record_select/config.rb', line 44 def order_by @order_by ||= "#{model.primary_key} ASC" end |
#per_page ⇒ Object
Records to show on a page
28 29 30 |
# File 'lib/record_select/config.rb', line 28 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.
40 41 42 |
# File 'lib/record_select/config.rb', line 40 def search_on @search_on ||= self.model.columns.collect{|c| c.name if [:text, :string].include? c.type}.compact end |