Activerecord 按Rails中的关联模型字段筛选集合
我有以下两种型号:Activerecord 按Rails中的关联模型字段筛选集合,activerecord,ruby-on-rails-4,Activerecord,Ruby On Rails 4,我有以下两种型号: class Author < ActiveRecord::Base has_many :books end class Book < ActiveRecord::Base belongs_to :author end 我想用独特的作者筛选这个集合。不从集合中选择唯一作者。仅收集具有作者身份栏独特价值的书籍 upd: 例如,我有收藏 > #<ActiveRecord::Relation [#<Book id: 1, title
class Author < ActiveRecord::Base
has_many :books
end
class Book < ActiveRecord::Base
belongs_to :author
end
我想用独特的作者筛选这个集合。不从集合中选择唯一作者。仅收集具有作者身份栏独特价值的书籍
upd:
例如,我有收藏
> #<ActiveRecord::Relation
[#<Book id: 1, title: "Tails", author_id: 1>,
<Book id: 2, title: "Tails part 2", author_id: 1>,
<Book id: 3, title: "Tails part 3", author_id: 1>,
<Book id: 4, title: "Stories part 1", author_id: 5>,
<Book id: 5, title: "Stories part 2", author_id: 5>]>
应该是这样的:
> #<ActiveRecord::Relation [
<Book id: 1, title: "Tails", author_id: 1>,
<Book id: 4, title: "Stories part 1", author_id: 5>
]>
实现这一点最直接的方法是首先找到您要过滤的作者ID author\u id=author.wherefirst\u name:'Deborah'。采摘:id 假设author_id现在包含数组[1,2,3]。现在,您可以使用此作者ID数组查找具有这些作者的书籍 Book.where作者id:作者id 这可以理解为,查找作者id在此id列表中的书籍。生成的SQL将是: 从books.author\u id位于1、2、3中的books中选择books.* 编辑: 在问题作者澄清后,我认为这是需要的:
预订。选择“作者id不同*”Thnaks作为您的答案。但这并不是我想要的。也许我的问题不太清楚。请参阅更新。我更新了我的答案。让我知道这是否是你要找的。那么你想为每个作者列出一本任意的书吗?是的。我认为这是正确的
> #<ActiveRecord::Relation [
<Book id: 1, title: "Tails", author_id: 1>,
<Book id: 4, title: "Stories part 1", author_id: 5>
]>