Class: RecordSelect::Config
- Defined in:
- lib/six-updater-web/vendor/plugins/recordselect/lib/record_select/config.rb
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.
-
#link? ⇒ Boolean
whether wrap the text returned by label in a link or not.
-
#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 21 22 |
# File 'lib/six-updater-web/vendor/plugins/recordselect/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] @link = [:link] end |
Instance Method Details
#full_text_search? ⇒ Boolean
50 51 52 |
# File 'lib/six-updater-web/vendor/plugins/recordselect/lib/record_select/config.rb', line 50 def full_text_search? @full_text_search ? true : false end |
#include ⇒ Object
54 55 56 |
# File 'lib/six-updater-web/vendor/plugins/recordselect/lib/record_select/config.rb', line 54 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>
75 76 77 |
# File 'lib/six-updater-web/vendor/plugins/recordselect/lib/record_select/config.rb', line 75 def label @label ||= proc {|r| r.to_label} end |
#link? ⇒ Boolean
whether wrap the text returned by label in a link or not
80 81 82 |
# File 'lib/six-updater-web/vendor/plugins/recordselect/lib/record_select/config.rb', line 80 def link? @link.nil? ? true : @link end |
#model ⇒ Object
The model object we’re browsing
25 26 27 |
# File 'lib/six-updater-web/vendor/plugins/recordselect/lib/record_select/config.rb', line 25 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.
36 37 38 |
# File 'lib/six-updater-web/vendor/plugins/recordselect/lib/record_select/config.rb', line 36 def notify @notify end |
#order_by ⇒ Object
46 47 48 |
# File 'lib/six-updater-web/vendor/plugins/recordselect/lib/record_select/config.rb', line 46 def order_by @order_by ||= "#{model.primary_key} ASC" end |
#per_page ⇒ Object
Records to show on a page
30 31 32 |
# File 'lib/six-updater-web/vendor/plugins/recordselect/lib/record_select/config.rb', line 30 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.
42 43 44 |
# File 'lib/six-updater-web/vendor/plugins/recordselect/lib/record_select/config.rb', line 42 def search_on @search_on ||= self.model.columns.collect{|c| c.name if [:text, :string].include? c.type}.compact end |