J'ai 2 modèles utilisateur et discussion. J'ai défini les indices pour les modèles ci-dessous:
Pour le modèle de l'utilisateur:Penser Sphinx avec Rails - Delta indexation semble fonctionner correctement pour un modèle, mais pas pour l'autre
define_index do
indexes email
indexes first_name
indexes last_name, :sortable => true
indexes groups(:name), :as => :group_names
has "IF(email_confirmed = true and status = 'approved', true, false)", :as => :approved_user, :type => :boolean
has "IF(email_confirmed = true and (status = 'approved' or status='blocked'), true, false)", :as => :approved_or_blocked_user, :type => :boolean
has points, :type => :integer
has created_at, :type => :datetime
has user(:id)
set_property :delta => true
end
Pour le modèle de discussion:
define_index do
indexes title
indexes description
indexes category(:title), :as => :category_title
indexes tags(:title), :as => :tag_title
has "IF(publish_to_blog = true AND sticky = false, true, false)", :as => :publish_to_main, :type => :boolean
has created_at
has updated_at, :type => :datetime
has recent_activity_at, :type => :datetime
has views_count, :type => :integer
has featured
has publish_to_blog
has sticky
set_property :delta => true
end
J'ai ajouté une colonne delta aux deux tables selon la documentation . Mon problème est que l'indexation delta ne fonctionne que pour le modèle Discussion et non pour le modèle User. Par exemple: Quand je mets à jour le 'titre' d'une discussion, je peux voir que le sphinx de la pensée fait tourner les indices etc. (comme le montrent les logs). Mais quand je mets à jour le 'first_name' ou le 'last_name' d'un utilisateur, rien ne se passe.
Le modèle User possède également une association has_many: through via un modèle appelé GroupsUser. J'ai installé un after_save sur le GroupsUser comme suit:
def set_user_delta_flag
user.delta = true
user.save
end
Même cela ne semble pas déclencher l'indexation delta sur le modèle de l'utilisateur. Une configuration similaire pour le modèle Discussion fonctionne parfaitement! Quelqu'un peut-il me dire pourquoi cela se produit?