我在 Rails 3.0.1 中有一个应用程序。有一个名为 Books 的表,其中包含许多列表。我与列表有条件关联,具体取决于它们是好列表还是坏列表。
#Book.rb
has_many :lists
has_many :good_lists, :foreign_key => 'book_id', :class_name => "List", :conditions => {:id => List.good_list_ids}
has_many :bad_lists, :foreign_key => 'book_id', :class_name => "List", :conditions => {:id => List.bad_list_ids}
目前,当应用程序启动时,条件会被缓存,但我希望它是动态的,good_list_ids
并且bad_list_ids
可以更改运行时。我希望能够通过链接连接找到与两个列表相关联的书籍。例如如果good_lists_ids = [1,2,3]
和bad_lists_ids = [4,5,6]
。我想获得与至少一本good_list_ids
和至少一本相关的书籍bad_list_ids
。
Book.joins(:good_lists).joins(:bad_lists)
我知道可以通过在从数据库中获取记录后应用过滤器来完成。但是有没有办法只在使用 AREL 的 sql 中做到这一点?