Hi, I have good this cool challenge from my boss on developing a very simple cms-like system to publish articles within. The caveat is that he wants to have multi-lingual content. At first I thought RoR would be perfect for the assignment but right now I''m not so sure. My first attempt involved creating a table for each model/languagde like this: articles_en articles_dk articles_de etc but then I will dynamically need to change the used table per request. Seems like something that will slow down the app quite a bit. Then I thought I could create the primary key in the table like a joined key of the id field and language so I would have these ids: 1-en 1-de 2-en 2-dk etc But ActiveRecord doesn''t support multiple columns as primary key. So right now I could some new idea or thought cause I''m sure RoR can do everything - it''s only a matter on finding out how to do it :-) Greetings, Gitte Wange
How about something like this... class Article < ActiveRecord::Base has_many :translations end class Translation < ActiveRecord::Base belongs_to :article validates_presence_of :language validates_presence_of :body validates_presence_of :title end tables... articles id INT(11) auto_increment, not null other non-language specific fields, like publish time, etc.. translations id INT(11) auto_increment, not null article_id language varchar(2) title varchar(80) body mediumtext Then you could do something like Articles.find_all_by_language(''en'') or @article = Articles.find_by_id_and_language(params[:id],''en'') -- Posted via http://www.ruby-forum.com/.
if necessary you could create a languages table and use a foreign key instead of storing the two letter language code. -- Posted via http://www.ruby-forum.com/.
Gitte: On Jan 4, 2006, at 4:57 AM, Gitte Wange wrote:> So right now I could some new idea or thought cause I''m sure RoR > can do everything - it''s only a matter on finding out how to do it :-)Have a table for languages as follows: id articleId LanguageCode in your articles model have :belongs_to language and in your languages model have :has_many articles Cheers, Hasan Diwan <hasan.diwan@gmail.com> -------------- next part -------------- A non-text attachment was scrubbed... Name: PGP.sig Type: application/pgp-signature Size: 186 bytes Desc: This is a digitally signed message part Url : http://wrath.rubyonrails.org/pipermail/rails/attachments/20060105/836fa63c/PGP.bin
Kevin Olbrich wrote:> How about something like this... > > > class Article < ActiveRecord::Base > has_many :translations > end > > class Translation < ActiveRecord::Base > belongs_to :article > validates_presence_of :language > validates_presence_of :body > validates_presence_of :title > end > > tables... > > articles > id INT(11) auto_increment, not null > other non-language specific fields, like publish time, etc.. > > translations > id INT(11) auto_increment, not null > article_id > language varchar(2) > title varchar(80) > body mediumtext > > Then you could do something like > > Articles.find_all_by_language(''en'') > or > @article = Articles.find_by_id_and_language(params[:id],''en'')Hi Kevin, Just wanted to say thanks for the idea - it works like a charm! Greetings, Gitte Wange