使用Rails 3中的ActiveRecord在Polymorphic表中查找特定类型的所有记录

kon*_*ung 1 polymorphism activerecord polymorphic-associations ruby-on-rails-3

我有一个表类别,它是一堆其他模型的多态模型.例如

型号地址有运费,账单,家庭,工作类别

型号手机有家庭,移动,工作,传真类别

model产品有医疗,设备,汽车,航空航天等类别.

我想要做的就是这样

Product.all_categories和get以及特定于此模型的所有类别的数组.

当然,对于每个有问题的模型,我都可以这样做:

Category.select("name").where("categorizable_type = ?","address")
Run Code Online (Sandbox Code Playgroud)

另外,pace_car - rails 3就绪,允许我做这样的事情:

Category.for_category_type(Address)
Run Code Online (Sandbox Code Playgroud)

但我想知道使用Active Record iteself是否有更直接/更优雅的解决方案 - 不依赖于宝石?

谢谢

Dyl*_*kow 9

我不知道ActiveRecord内置任何内容给你这个,但你可以for_category_type在Category控制器的一行代码中设置该方法:

scope :for_category_type, lambda { |class_name| where("categorizable_type = ?", class_name) }
Run Code Online (Sandbox Code Playgroud)