2011-04-16 80 views
0

所以我创建了一个db schema来代表文章库。但是,每篇文章都可以有很多翻译。所以,有一篇基础文章,其中包含共享信息以及该文章的翻译。我目前有一个文章表/班和一个翻译表/班。每篇文章has_many翻译等。我的问题是,如果有一种很好的方法来委托方法和找到这个系统的文章。Rails亲子协会

我应该在文章类上创建自己的工厂方法来检索正确的翻译子吗?我是否应该在翻译中添加委派人,以便我可以追溯到父项并获得关于该文章的共享信息?

另一大问题是named_scopes会去哪儿。他们是否应该继续文章或翻译?我试图想出最好的方法来抽象出一篇文章和它的翻译之间的区别,并且只有一堆文章。思考?

谢谢!

+0

我更感兴趣的帮助,以获取文章的逻辑应该去哪里。当我想要得到一篇文章时,我是否应该真的搜索一个翻译,然后在需要时从其父文章获取信息,或者是否应该通过父项完成所有工作? – Danny 2011-04-16 22:53:50

+0

它应该转到文章模型,作为范围或方法,正如我在回答中显示的那样。是的,你应该通过文章获得翻译。 – Spyros 2011-04-17 00:12:53

回答

0

我认为我会用范围来获取基于语言的文章和翻译。这将是这样的文章模型:

scope :translation, lambda { |language| 
    includes(:translation). 
    where("translations.language = ?", language) 
    } 
+0

但是,这使我得到了某种语言的所有文章,对不对?我想知道是否有任何获得特定文章的好方法。我应该写我自己的发现者吗? – Danny 2011-04-16 22:10:32

+0

即使您有范围,您也可以添加进一步的检查。因此,你可以做Article.translations.first或只是做任何你想要的关系。 – Spyros 2011-04-16 22:14:20

+0

您甚至可以通过添加另一个范围来进一步进行研究,从而为您提供满足其他条件的文章,如阅读文章。然后做Article.translations.read。 – Spyros 2011-04-16 22:15:08