summaryrefslogtreecommitdiff
path: root/vendor/plugins/thinking-sphinx/spec/fixtures/models.rb
blob: 0e62906d95292731f36d9b4c01c56758e86b6f26 (plain)
1
2
3
4
5
6
7
8
9
10
11
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
93
94
class Person < ActiveRecord::Base
  belongs_to :team, :polymorphic => :true
  has_many :contacts
  
  has_many :friendships
  has_many :friends, :through => :friendships
  
  has_many :tags
  
  has_many :football_teams, :through => :tags
  
  define_index do
    indexes [first_name, middle_initial, last_name], :as => :name
    indexes team.name, :as => :team_name
    indexes contacts.phone_number, :as => :phone_numbers
    indexes city,   :prefixes => true
    indexes state,  :infixes  => true
    
    has [first_name, middle_initial, last_name], :as => :name_sort
    has team.name, :as => :team_name_sort
    
    has [:id, :team_id], :as => :ids
    has team(:id), :as => :team_id
    
    has contacts.phone_number, :as => :phone_number_sort
    has contacts(:id), :as => :contact_ids
    
    has birthday
    
    has friendships.person_id, :as => :friendly_ids
    
    set_property :delta => true
  end
end

class Parent < Person
end

class Child < Person
  belongs_to :parent
  define_index do
    indexes [parent.first_name, parent.middle_initial, parent.last_name], :as => :parent_name
  end
end

class Contact < ActiveRecord::Base
  belongs_to :person
end

class Tag < ActiveRecord::Base
  belongs_to :person
  belongs_to :football_team
  belongs_to :cricket_team
end

class FootballTeam < ActiveRecord::Base
  has_many :tags
end

class CricketTeam < ActiveRecord::Base
  define_index do
    indexes :name
    has "SELECT cricket_team_id, id FROM tags", :source => :query, :as => :tags
  end
end

class Friendship < ActiveRecord::Base
  belongs_to :person
  belongs_to :friend, :class_name => "Person", :foreign_key => :friend_id
  
  define_index do
    has person_id, friend_id
  end
end

class Alpha < ActiveRecord::Base
  define_index do
    indexes :name, :sortable => true
    
    set_property :field_weights => {"name" => 10}
  end
end

class Beta < ActiveRecord::Base
  define_index do
    indexes :name, :sortable => true
    
    set_property :delta => true
  end
end

class Search < ActiveRecord::Base
  #
end