Forum: Rails-ES Busqueda en métodos de un modelo con Thin king Sphinx

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
9b3b1fd6baa8379638d8399ecd60045d?d=identicon&s=25 Emili Parreño (emili)
on 2008-12-23 09:54
(Received via mailing list)
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 ....

--
39086eb3d9a1437276d07c08ea0c3821?d=identicon&s=25 Guillermo Álvarez Fernández (Guest)
on 2008-12-23 10:18
(Received via mailing list)
_______________________________________________
Ror-es mailing list
Ror-es@lists.simplelogica.net
http://lists.simplelogica.net/mailman/listinfo/ror-es
33a24a134536b312b0d5334c2a9152db?d=identicon&s=25 Pablo Formoso Estrada (Guest)
on 2008-12-23 10:34
(Received via mailing list)
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.
This topic is locked and can not be replied to.