Hola Gente,
Andan bien ?
Quería consultarles a los más experientes a ver si les ha pasado el
siguiente problema con has_and_belongs_to_many:
Mi idea es tener un modelo Article con el siguiente código, a modo de
ejemplo:
class Article < ActiveRecord::Base
..
has_and_belongs_to_many :lista, :class_name => self.name,
:finder_sql => 'SELECT articles.* FROM articles WHERE articles.id =
#{id}'
...
end
Como notaran la sentencia sql del finder_sql esta en single_quotes para ser
evaluada como parte del Object-life cycle y no al momento de que se carga la
clase.
Hasta ahi todo báraro, si lo pruebo con una única instancia, lease:
>> a = Article.find(1)
>> l1 = a.lista => me devuelve una lista con el mismo objeto => OK
Ahora si, continuo probando (obtengo otra instancia de Article)...
>> b = Article.find(2)
>> l2 = b.lista => me devuelve la misma lista q l1 (l1 == l2, un único
elemento con id igual a a.id)
Pq????
Por lo q pude ver, se evalúa la "lista" solo la primera vez q se ejecuta,
por lo tanto se remplaza #{id} por a.id y así queda 'hardcoded' la sql,
luego cuando consulto por b.lista se ejecuta la misma sentencia sql que para
el caso de a.lista (en su lugar, me agradaría que se remplazara #{id} por
b.id)
Curioso: Si utilizo el mismo :finder_sql para el caso has_many funciona como
espero...l1 != l2.
...muy extraño....si tienen alguna idea..
saludos y gracias,
Marcelo
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar