我正在尝试查询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语法错误。
有人有解决方案吗?