我有三个型号,我想执行跨一个简单的搜索:Rails 3.1 - 简单搜索三个(或更多)模型?
class Release < ActiveRecord::Base
has_many :artist_releases
has_many :artists, :through => :artist_releases
has_many :products, :dependent => :destroy
end
class Product < ActiveRecord::Base
belongs_to :release
has_many :artists, :through => :releases
end
class Artist < ActiveRecord::Base
has_many :artist_releases
has_many :releases, :through => :artist_releases
end
在我的产品控制器我可以成功地呈现产品列表使用跨越释放和产品搜索:
@products = Product.find(:all, :joins => :release, :conditions => ['products.cat_no LIKE ? OR releases.title LIKE ?', "%#{params[:search]}%","%#{params[:search]}%"])
我真的需要能够搜索艺术家。我会怎么做呢?我最好在产品控制器中使用它,因为它是我需要显示的产品列表。
我试过添加:连接=>:艺术家及其变体,但似乎没有工作。
我知道有像斯芬克斯这样的全面搜索选项,但现在我只需要这个简单的方法来工作。
在此先感谢!
这看起来不错,正是我所需要的,但是,它给了我一个错误:ProductsController中的HasManyThroughAssociationNotFoundError - 找不到关联:产品模型中的关联:我知道这不是一个有很多通过,所以我们如何做到这一点期望一对多的关系? – Raoot
请注意连接关联名称中单数':release',而表名中的复数'releases.title'。 Crucial :) –
是的,我喜欢它。正如我测试我删除了所有引用释放和错误总是相同的!?! – Raoot