老习惯先贴代码吧 先看 模型
# Collocation 和 Group 都有 state 和 feature 属性
class Collocation < ActiveRecord::Base
has_one :hit, as: :hitable
has_many :sets, as: :setable
end
class Group < ActiveRecord::Base
has_one :hit, as: :hitable
has_many :sets, as: :setable
end
class Set < ActiveRecord::Base
belongs_to :setable, :polymorphic
# 我想在下面这个scope里面 取到对应的state 和 feature 的 Collocation 和 Group 怎么写
# 下面的这个写法不对
scope :active_sets, -> { includes(:setable).where(setable: { state: 'ACTIVE', feature: true }) }
end
然后看看我在 Controller 里面原来的比较搓的方法
def index
@sets = Set.all
@sets = sets.select do |set|
set.setable.state == "ACTIVE" && set.setable.is_featured == true
end
end
这样是可以的 但是现在想 这样写
@sets = Set.active_sets # 这里就是上面模型里面我不知道该怎么写的 诸位大侠。
我理解的多态 是一个 容器(也是 C++ 里面的基类)用基类指针数组去找子类特定的属性。。反正好吧就是这样的 有没有小伙伴告诉我这个怎么写 某再次多谢了