小编Ant*_*ony的帖子

具有has_many关联的rails中的named_scope

我试图使用Rails的魔力实现我认为将是一个相当复杂的查询,而不会在代码中看到很多丑陋的SQL.

由于我的数据库处理的是相当专业的生物医学模型,我将把以下内容翻译成更真实的场景.

我有一本模特书

has_many:章节

和那章

belongs_to:书

例如,章节有一个名称属性,名称可以是前言,介绍和附录,一本书可以有一个名为前言的章节和一个名为引言的章节,但没有章节命名为附录.实际上是这些的任何组合

我希望找到所有包含章节命名前言和介绍的书籍.

目前我有一个named_scope如下

Book
  named_scope :has_chapter?, lambda { |chapter_names|
    condition_string_array = []
    chapter_names.size.times{condition_string_array << "chapters.name = ?"}
    condition_string = condition_string_array.join(" OR ")
    {:joins => [:chapters]  , :conditions => [condition_string, * chapter_names]}
  }
Run Code Online (Sandbox Code Playgroud)

如果我打电话给Book.has_chapter?["前言","引言"]这将找到我所有的书籍,其中有一章名为序言或介绍.我怎么能这样做会找到我分离株类似的事情记前言和简介?

我不熟悉SQL,所以我不太确定需要什么样的连接以及是否可以在命名范围内实现.

非常感谢

安东尼

activerecord named-scope ruby-on-rails associations

1
推荐指数
1
解决办法
1万
查看次数