@huacnlee 求助,rubyChina 怎么没有错误?
路过,赞一个
抽烟怎么了?是共产党怎么了?
完善一下,如果新增一个类 Dog,那么 belongs_to :eyeable, class_name: "Face", polymorphic: true 这里就不能制定 class_name 为 Face 了,因为它有可能是 Dog
class Dog
include Mongoid::Document
field :name, type: String
has_many :left_eyes, class_name: "Eye", as: :eyeable
has_many :right_eyes, class_name: "Eye", as: :eyeable
end
所以这个类名需要动态的添加,完整代码如下:
module Mongoid
module Relations
module Eager
class Base
def each_loaded_document_with_polymorphic(&block)
if @metadata[:polymorphic]
#查找所有关联的eyeable_type: Dog,Face
@metadata.inverse_klass.any_in(group_by_key => keys_from_docs).distinct(group_by_key.gsub(/_id$/, '_type')).compact.each do |type|
#预加载Dog,Face对象
type.constantize.any_in("_id" => keys_from_docs).each do |doc|
yield doc
end
end
else
each_loaded_document_without_polymorphic(&block)
end
end
alias_method_chain :each_loaded_document, :polymorphic
end
end
end
end
测试: 2.1.1 :008 > eyes = Eye.includes(:eyeable).to_a MOPED: 127.0.0.1:27017 QUERY runtime: 0.7560ms MOPED: 127.0.0.1:27017 QUERY runtime: 0.7770ms MOPED: 127.0.0.1:27017 QUERY runtime: 0.4450ms => [#, #, #, #] 2.1.1 :009 > eyes.first.eyeable => # 2.1.1 :010 > eyes.last.eyeable => # 2.1.1 :011 >
北京不是没有 ruby 团队吗?
人人都是产品经理啊
运动一下嘛,做点强度大的,比如:足球,娃哈哈。。
#8 楼 @lihaidong 期待你的改进
哇哦,看着不错哦
#4 楼 @lihaidong 有没有 procompile 升级得文档,借鉴一下
好像去啊,可惜 2 号有事,能不能把 ppt 和资料分享一下啊
欧美风格啊,很不错啊,peter 老师
同喜同喜,做 ruby 也三年有余了