我写了一个有效的方法,但感觉不优雅。我想知道我是否错过了更好的方法。
我有一个像这样设置的多态关联;
class Employee < ActiveRecord::Base
has_many :phones, as: :phoneable
end
class Client < ActiveRecord::Base
has_many :phones, as: :phoneable
end
class Phone < ActiveRecord::Base
belongs_to :phoneable, polymorphic: true
end
我的电话表有标准phoneable_id:integer
和phoneable_type:string
列。
我想要做的是为先前选择的一组员工获取所有电话,例如
employees = Employee.where role: 'peon'
如果这是正常的has_many
关系,我会将电话查询写为;
Phone.where employee_id: employees
为了在多态关系中执行此操作,我将查询编写为;
Phone.where phoneable_type: 'employee', phoneable_id: employees
这可行,但我觉得应该有比明确声明phoneable_type
. Rails 是否有办法在出现一组员工时自动执行此操作,或者我是否为了简单而过度伸张?