Busqueda en métodos de un modelo con Thin king Sphinx


#1

Os explico la situación:

En un modelo User, hay varios campos: nickname, name, surname,
activated_at … la combinación de algunos de ellos determina si el
usuario está activo, ya que ha completado su perfil, o no, por
ejemplo:

class User < ActiveRecord::Base

def active_user
!(self.activated_at.nil? || self.nickname.nil? || self.name.nil?)
end

hasta aqui todo normal. Como es lógico quiero excluir los usuarios
inactivos de las búsquedas (estoy usando Shphinx + Thinking Sphinx)

Sabeis si hay alguna manera de indexar el resultado de un método?, en
este caso seria hacer algo así

define_index do
indexes nickname, :sortable => true

has active_user, :as => :active
end

para luego poder hacer:

@results = User.search query, :coditions => {:active => true}

Evidentemente una solución es comprobar por separado cada uno de los
campos que debe completar el usuario, pero si se pudiera hacer esto
seria …


#2

Ror-es mailing list
removed_email_address@domain.invalid
http://lists.simplelogica.net/mailman/listinfo/ror-es


#3

No se si te valdrá, Pero el acts_as_auditable guarda todos los
movimientos
sobre el modelo que le digas, guarda id de lo que audita, la clase, el
controlador
la acción y en un hash fácil de extraer los campos modificados.

no se si te ayudará mucho. De todas formas lo mejor que puedes hacer
si usas
state_machine es que se en plan wizard y el activo venga determinado
por el estado

def refistration_compleate
self.state == “Finished”
end

Después puedes ponerle un call_back en el estado para que fije el
timestamp de la
activación.