2013-04-29 4 views
0

Puis-je définir un accesseur virtuel dans le modèle et définir cet accesseur comme champ ou attribut dans Thinking Sphinx? Je suis en train comme ça, mais obtenir erreur "type de méthode non définie » pour nulle: NilClass " modèle d'index :Accesseur virtuel pour Thinking Sphinx

... 
has price_in_base_currency 

et dans le modèle:

.. 
attr_accessible :price 
attr_accessor :price_in_base_currency 

belongs_to :currency 

before_save :set_accessor 

def set_accessor 
price_in_base_currency = price * currency.rate 
end 

Répondre

1

Je l'ai fait avec sql clair: Vous n'avez pas besoin du GROUP_CONCAT s'il s'agit d'une seule valeur (par opposition à un attribut collection/multi-valeur).

has "GROUP_CONCAT((price * currencies.rate) SEPARATOR ',')", :as => "price_in_base_currency", :type => :integer 
has "GROUP_CONCAT((price * currencies.rate) SEPARATOR ',')", :as => "price_in_base_currency", :type => :integer 
+1

Et Sphinx se connecte via SQL, de sorte que vos objets de modèle (et Ruby généralement) ne sont pas impliqués dans le processus d'indexation. – pat

Questions connexes