Hi,
I have a database table, containing a large number of fields, among
which a bunch of i18n fields, like DESC_EN, DESC_FR, DESC_DE, etc. I
would like to dynamically select which one of these fields I will
return, by using SQL’s “AS” pointing to the same field name:
DESCRIPTION_I18N.
My Rails code looks something like this:
MODEL
def description_i18n
The actual field is selected dynamically:
self[:desc_fr]
end
CONTROLLER
@my_data = MyTable.find(
:all,
:select => “ID, CODE, DESC_FR AS DESCRIPTION_I18N”,
:conditions => conditions_list)
@my_data_i18n = @my_data.to_xml :methods => [:description_i18n]
render :xml => @my_data_i18n
##########################
The resulting XML structure lacks a value for the DESCRIPTION_I18N
field, unless I comment out the :select option in find()…
Unfortunately, I need the :select option to restrict the number of
fields in my SELECT statement, otherwise I get way too much data.
Can anyone figure out what I’m doing wrong?
Thanks,
Chris.
On 29 Feb 2008, at 10:50, Chris Gers32 wrote:
Hi,
I have a database table, containing a large number of fields, among
which a bunch of i18n fields, like DESC_EN, DESC_FR, DESC_DE, etc. I
would like to dynamically select which one of these fields I will
return, by using SQL’s “AS” pointing to the same field name:
DESCRIPTION_I18N.
does it not like the fact that you have 2 things that are identical
apart from the case?
Also won’t this fail because the description_i18n method wants the
desc_fr field which isn’t available with that name?
Fred
does it not like the fact that you have 2 things that are identical
apart from the case?
That’s not the problem, because the case is irrelevant in SQL (at least
as far as Oracle is concerned); this works fine with all other fields.
Also won’t this fail because the description_i18n method wants the
desc_fr field which isn’t available with that name?
I see your point: I don’t need to mention DESCRIPTION_I18N, because
Rails creates it in to_xml(). So removing “AS DESCRIPTION_I18N” solved
my problem.
Thanks again,
Chris.