(使用 Rails 3)
我通过关联在 has_many 中有 2 个模型(车辆和功能)。
因此,车辆 1 可以具有能力 1(例如牵引)、能力 2(例如乘客)、能力 3(例如飞行)等。
v = Vehicle.first
v.capabilities.pluck(:name) #=> will give something like ['towing', 'passenger', 'flying']
我想找到所有不能具有特定能力的车辆,例如所有不能飞行的车辆。
我尝试过与下面类似的查询,但它仍然包括飞行器,我认为主要是因为飞机还有其他功能。
non_flying = Vehicle.includes(:capabilities).where('capabilities.id NOT IN (?)', [2,3])
non_flying.first.capabilities.pluck(:name) #=> will give something like ['towing'].
请注意,飞行能力不包括在内,但我根本不希望这辆车返回。我怎么写这个?
如果可能的话,我宁愿不使用 meta_wheel 或 squeel gems,但是除非有更简单的解决方案,否则欢迎任何 arel_table 实现。