【问题标题】:Rails parent-child associationRails 父子关联
【发布时间】:2011-06-06 15:23:41
【问题描述】:

所以我正在创建一个代表文章库的数据库模式。但是,每篇文章都可以有许多翻译。因此,有一篇基础文章,其中包含该文章的共享信息和翻译。我目前有一个文章表/类和一个翻译表/类。每篇文章都有_many翻译等等。不过,我的问题是,是否有一种很好的方法来委派方法并使用该系统查找文章。

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

另一个大问题是named_scopes 的去向。他们应该继续阅读文章还是翻译?我试图想出最好的方法来抽象出一篇文章和它的翻译之间的区别,然后只写一堆文章。想法?

谢谢!

【问题讨论】:

  • 我更感兴趣的是关于获取文章的逻辑应该去哪里的帮助。当我想获得一篇文章时,我应该真正搜索翻译,然后在需要时从其父文章中获取信息,还是应该通过父文章做所有事情?
  • 它应该转到文章模型,作为范围或方法,正如我在回答中向您展示的那样。是的,您应该通过文章获得翻译。

标签: ruby-on-rails ruby activerecord


【解决方案1】:

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

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

【讨论】:

  • 但这可以让我找到某种语言的所有文章,对吧?我想知道是否有任何获得特定文章的好方法。我应该只写自己的查找器吗?
  • 即使您有范围,也可以添加进一步检查。因此,您可以执行 Article.translations.first 或只是对关系进行任何您想要的查找。
  • 您甚至可以通过添加另一个范围来更进一步,让您的文章满足其他条件,例如是否已阅读。然后做 Article.translations.read。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-07
  • 2019-08-06
  • 2011-06-20
  • 1970-01-01
相关资源
最近更新 更多