我正在尝试使用 Rails 的魔力来实现我认为相当复杂的查询,而代码中没有很多丑陋的 SQL。
由于我的数据库正在处理相当专业的生物医学模型,因此我将以下内容转换为更真实的场景。
我有一本样板书
has_many:章节
和那章
属于_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]}
}
如果我打电话给书。有章?["preface", "introduction"] 这将为我找到所有具有名为序言或介绍的章节的书籍。我怎么能做类似的事情,发现我隔离了章节序言和介绍?
我对 SQL 不是很熟悉,所以不太确定需要什么样的连接,以及这是否可以在命名范围内实现。
非常感谢
安东尼