所以这就是问题,因为AR中的find_by方法使用了Method Missing技术,你实际上不能用alias_method对它们进行别名(因为该方法不存在!)。或者看起来如此。
有人知道怎么做吗?
为了提供更多细节,我想做的就是这个..
我有一个AR模型,User,但它从辅助数据源增加了它的一些属性 - 这应该是默认行为。最初要实现这一点,我使用了after_find回调,并在那时附加了第二个数据源中的新属性。
问题是我希望能够偶尔使用find_by方法而不增加第二个数据源。
我现在的想法是使用别名来创建两种find_by方法:find_by和find_without_by。
理想的情况是,如果rails有一些魔法酱可以让你在alias_method中使用通配符,导致:
alias_method:find_without *,:find *
有什么建议吗?如果需要,我可以澄清任何具体要点。
提前致谢!
答案 0 :(得分:3)
您可以在自己的模型中定义method_missing,然后在find_without_abc
调用时传递给缺少的常规方法:
MyModel < ActiveRecord::Base
def method_missing(method, *args)
return super(method, args) if method =~ /find_without/
# Your custom find code is here...
end
end