2008/3/23 Eduardo Trápani <[EMAIL PROTECTED]>:
> Hola,
>
> Tengo Traducciones y Oraciones. Los originales también son
> traducciones, así que hay un campo que engancha el original si es una
> traducción (subtranslations). El texto está en las Oraciones.
>
> class Sentence < ActiveRecord::Base
> has_many :translations
> end
>
> class Translation < ActiveRecord::Base
> belongs_to :sentence
> has_many :subtranslations, :class_name => 'Translation', :foreign_key =>
> 'translation_id'
> end
>
> Al cargar las traducciones, incluyendo las oraciones, quiero sólo las
> oraciones que tengan un cierto texto.
>
> @t = Translation.find(:all,:include =>
>
> [:sentence,{:subtranslations=>[:sentence]}],:conditions=>['sentences_subtranslations.name
> like ?','%cierto texto%'])
>
> ¡Pero no funciona!
>
> Lo que sí funciona es hacer:
>
> @t = Translation.find(:all,:include =>
>
> [:sentence,{:subtranslations=>[:sentence]}],:conditions=>['sentences_translations.name
> like ?','%cierto texto%'])
>
> Es decir, usando 'sentences_translations' en lugar de
> 'sentences_subtranslations' que es el nombre real de la relación. No
> está bien, ¿no? No sé si será un bug ...
Hola Eduardo,
Esto no es un bug, en las condiciones deberias poner el nombre de la
tabla, rails siempre tiene algun workaround para saber el nombre de la
tabla en caso de tener que armar las condiciones SQL. Pero en el caso
de :conditions, es una especificacion directa de las condiciones y no
es algo a ser evaluado para determinar a que tabla pertenece, por eso
mismo las escribes con sintaxis SQL like.
Por eso mismo deberias poner el nombre real de la tabla y no del
nombre virtual asignado a la relacion.
Saludos!
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar