I have two tables
manufacturers manuf_details (details are in several languages) id id name manufacturer_id . details . locale .
I have two models
Manufacturer Manuf_details has_one :manuf_detail belongs_to :manufacturer
I want to get all the info from the manufacturers table and the details from the manuf_details table for a specific locale and manufacturer.
In the controller I have the following:
@manufacturer = Manufacturer.find(:first, :conditions => {:id => params[:id]})
In the view I have the following
<%= @manufacturer.name %> <%= @manufacturer.manuf_detail.details%>
Rails automatically generates the sql to get the info from the details table for the view as in: SELECT * FROM `manuf_descriptions` WHERE (`manuf_descriptions`.manufacturer_id = 4) LIMIT 1
But what I need is it to generate the following: SELECT * FROM `manuf_descriptions` WHERE (`manuf_descriptions`.manufacturer_id = 4AND 'manuf_descriptions'.locale = 'EN') LIMIT 1
Or if the user selected say FRENCH it would be SELECT * FROM `manuf_descriptions` WHERE (`manuf_descriptions`.manufacturer_id = 4AND 'manuf_descriptions'.locale = 'FR') LIMIT 1
I tried to do a join as in the following:
find(:first, :joins => :manuf_description, :conditions => {:id => manufacturer_id, :manuf_descriptions => {:locale => I18n.locale}})
however this does not help because the line
<%= @manufacturer.manuf_detail.details%> in the view still gets generated by rails into
SELECT * FROM `manuf_descriptions` WHERE (`manuf_descriptions`.manufacturer_id = 4) LIMIT 1
How can I solve this?
Thank you in advance