Ich habe die folgenden Modelle, in denen ich die Tabelle Sprache und Produkte über die Tabelle Übersetzung mit dem Rails has_many :through-Paradigma verbinden:
class Language < ActiveRecord::Base
has_many :translations
has_many :products, :through => :translations
end
class Translation < ActiveRecord::Base
belongs_to :product
belongs_to :language
end
class Product < ActiveRecord::Basehas_many :translations
has_many :translations
has_many :languages, :through => :translations
end
Ich möchte die englische Übersetzung für ein bestimmtes Produkt finden.
Ich kann die zugehörigen Sprachen und Übersetzungen auflisten:
prod = Product.find(4)
en = Language.find(:first, :conditions => { :lang_code => 'en' })
puts prod.translations
puts prod.languages
Dies wird gedruckt:
#<Translation:0x11022a4>
#<Translation:0x1102114>
#<Language:0x602070>
#<Language:0x602020>
(Für dieses Produkt gibt es eine englische und französische Übersetzung).
Wie kann ich die Übersetzung für prod
entsprechend der en
Sprache?
Wenn das keinen Sinn ergibt, hier ist die entsprechende SQL:
SELECT t.* FROM products p, translations t, languages l WHERE l.id = t.language_id AND p.id = t.product_id AND l.lang_code = 'en';