12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
# File 'lib/thinking_sphinx/active_record.rb', line 12
def self.included(base)
base.class_eval do
class_inheritable_array :sphinx_indexes, :sphinx_facets
extend ThinkingSphinx::ActiveRecord::ClassMethods
class << self
attr_accessor :sphinx_index_blocks
def set_sphinx_primary_key(attribute)
@sphinx_primary_key_attribute = attribute
end
def primary_key_for_sphinx
@sphinx_primary_key_attribute || primary_key
end
def sphinx_index_options
sphinx_indexes.last.options
end
def to_crc32
self.name.to_crc32
end
def to_crc32s
(subclasses << self).collect { |klass| klass.to_crc32 }
end
def sphinx_database_adapter
@sphinx_database_adapter ||=
ThinkingSphinx::AbstractAdapter.detect(self)
end
def sphinx_name
self.name.underscore.tr(':/\\', '_')
end
def reset_subclasses_with_thinking_sphinx
reset_subclasses_without_thinking_sphinx
ThinkingSphinx.reset_context!
end
alias_method_chain :reset_subclasses, :thinking_sphinx
private
def defined_indexes?
@defined_indexes
end
def defined_indexes=(value)
@defined_indexes = value
end
def sphinx_delta?
self.sphinx_indexes.any? { |index| index.delta? }
end
end
end
::ActiveRecord::Associations::HasManyAssociation.send(
:include, ThinkingSphinx::ActiveRecord::HasManyAssociation
)
::ActiveRecord::Associations::HasManyThroughAssociation.send(
:include, ThinkingSphinx::ActiveRecord::HasManyAssociation
)
end
|