Ruby on rails Rails 3.2:在初始化后使用预加载关系
如果关系已加载,我想对其执行一些操作(例如,通过Ruby on rails Rails 3.2:在初始化后使用预加载关系,ruby-on-rails,relation,Ruby On Rails,Relation,如果关系已加载,我想对其执行一些操作(例如,通过包含)。具体来说,我有一个数据结构Thread,其中包含nMessages。我想创建一个消息树,当它们急于加载时。我试过的方法如下: class Thread has_many :messages after_initialize do gen_tree if messages.loaded? end end 我的问题是,钩子是在关系加载之前执行的。与查找后的相同 有没有办法实现我想要的 您好, CK我找到的一个解决方案是重
包含)。具体来说,我有一个数据结构Thread
,其中包含nMessage
s。我想创建一个消息树,当它们急于加载时。我试过的方法如下:
class Thread
has_many :messages
after_initialize do
gen_tree if messages.loaded?
end
end
我的问题是,钩子是在关系加载之前执行的。与查找后的相同
有没有办法实现我想要的
您好,
CK我找到的一个解决方案是重命名现有的关系方法并实现您自己的方法:
class Thread
has_many :messages
alias_method :messages_orig, :messages
def messages
ret = messages_orig
unless @generated
@generated = true
gen_tree
sort_tree
end
ret
end
end
据我测试,它没有副作用
LG,
CK