tob*_*b88 3 postgresql ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2
我有以下多态关联...
class Activity < ActiveRecord::Base
belongs_to :owner, polymorphic: true
end
class User < ActiveRecord::Base
has_many :activities, as: :owner
end
class Manager < ActiveRecord::Base
has_many :activities, as: :owner
end
Run Code Online (Sandbox Code Playgroud)
我试图进行一个查询,它只会拉出所有者(用户或经理)visible设置的活动true.
我已经想通了,如果我想为其中一位业主做这件事,我可以按照以下方式做到这一点......
Activity.joins("INNER JOIN users ON activities.owner_id = users.id").where(:activities => {:owner_type => 'User'}).where(:users => {:visible => true})
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何为两者做到这一点.有人可以帮忙吗?
这应该工作:
Activity.
joins("LEFT JOIN users ON activities.owner_type = 'User' AND
activities.owner_id = users.id").
joins("LEFT JOIN managers ON activities.owner_type = 'Manager' AND
activities.owner_id = managers.id").
where("users.visible = ? OR managers.visible = ?", true, true)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1689 次 |
| 最近记录: |