Module: IsMsfteSearchable::ActiveRecordExtension::ClassMethods
- Defined in:
- lib/is_msfte_searchable/active_record_extension.rb
Instance Method Summary collapse
- #is_msfte_searchable(options = {}) ⇒ Object
- #msfte_column_indexed?(column) ⇒ Boolean
-
#msfte_pending_changes? ⇒ Boolean
Query the object properties of the current table.
Instance Method Details
#is_msfte_searchable(options = {}) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/is_msfte_searchable/active_record_extension.rb', line 6 def is_msfte_searchable(={}) .reverse_merge! :change_tracking => true, :update_index => true cattr_accessor :msfte_table_name, :msfte_columns, :msfte_catalog, :msfte_unique_key_column, :msfte_unique_key_index, :msfte_change_tracking, :msfte_update_index self.msfte_table_name = [:table_name] ? [:table_name].to_s : table_name self.msfte_columns = [:columns] ? [:columns].map(&:to_s) : column_names self.msfte_catalog = [:catalog] ? [:catalog].to_s : "#{msfte_table_name}_fti" self.msfte_unique_key_column = [:unique_key_column] ? [:unique_key_column].to_s : primary_key self.msfte_unique_key_index = [:unique_key_index] ? [:unique_key_index].to_s : "#{msfte_unique_key_column}_idx" self.msfte_change_tracking = [:change_tracking] self.msfte_update_index = [:update_index] include IsMsfteSearchable::ActiveRecordMixin include IsMsfteSearchable::ArelMixin end |
#msfte_column_indexed?(column) ⇒ Boolean
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/is_msfte_searchable/active_record_extension.rb', line 20 def msfte_column_indexed?(column) # Any column in this table full-text indexed? sql_statement = <<-stmt select count(*) from sys.fulltext_index_columns fic inner join sys.columns c on c.[object_id] = fic.[object_id] and c.[column_id] = fic.[column_id] where OBJECT_ID('#{table_name}') = fic.[object_id] stmt # Search for an actual column name if given. sql_statement << " and name = '#{column}'" unless column == '*' value = connection.select_value(sql_statement) value.to_i == 1 end |
#msfte_pending_changes? ⇒ Boolean
Query the object properties of the current table. TableFulltextPendingChanges returns the number of pending changes. See: technet.microsoft.com/en-us/library/ms188390.aspx
42 43 44 45 46 47 |
# File 'lib/is_msfte_searchable/active_record_extension.rb', line 42 def msfte_pending_changes? sql_statement = %|select cast(OBJECTPROPERTYEX(OBJECT_ID('#{table_name}'), 'TableFulltextPendingChanges') as varchar(10))| value = connection.select_value(sql_statement) value.to_i != 0 end |