Rails 3+,从两端查询多态关联

时间:2016-07-20 06:11:26

标签: mysql ruby-on-rails-3 join polymorphic-associations eager-loading

我正在尝试查询Rail中的多态关联,并遇到了这个问题。我有一些模型,User,MorningVisit,AfternoonVisit,NightVisit和Result

class User < ActiveRecord::Base
    attr_accessible :name
    has_one :morning_visit
    has_one :afternoon_visit
    has_one :night_visit
end

class MorningVisit < ActiveRecord::Base
    belongs_to :user
    has_many :results, as: :visitable
end

class AfternoonVisit < ActiveRecord::Base
    belongs_to :user
    has_many :results, as: :visitable
end

class NightVisit < ActiveRecord::Base
    belongs_to :user
    has_many :results, as: :visitable
end

class Result < ActiveRecord::Base
    attr_accessible :type
    belongs_to :visitable, polymorphic: true
end

一切都完美存储,但现在我需要使用filterrific对用户进行一些搜索和查询。

如果我这样做

includes(:visitable => :user).order("user.name")

我得到了

  

无法急切加载多态关联:visitable

所以我尝试用

手动加入MorningVisit
.joins( "JOIN morning_visits ON lab_results.visitable_id = morning_visit.id AND lab_results.visitable_type = 'MorningVisit'")
.joins( "INNER JOIN `users` ON `morning_visits`.`user_id` = `users`.`id` ")

订单(“user.name”)有效。

但如果我加了

.joins( "JOIN afternoon_visits ON lab_results.visitable_id = afternoon_visits.id AND lab_results.visitable_type = 'AfternoonVisit'")

它什么都不返回。如果我尝试外连接,它会一直告诉我我的SQL语法错误。

有人有解决方案吗?

0 个答案:

没有答案
相关问题