ruby-on-rails – 了解Ruby on Rails发送(:include
发布时间:2020-12-17 02:44:35 所属栏目:百科 来源:网络整理
导读:我正在尝试开发一个 Redmine插件,我开始阅读 documentation,并学习了很多Ruby和很多Ruby on Rails. (我是PHP / Python / js家伙) 然后我开始查看其他插件,我找到了this code.我找不到足够的信息来完全理解这行代码如何工作: Issue.send(:include,RedmineReq
我正在尝试开发一个
Redmine插件,我开始阅读
documentation,并学习了很多Ruby和很多Ruby on Rails. (我是PHP / Python / js家伙)
然后我开始查看其他插件,我找到了this code.我找不到足够的信息来完全理解这行代码如何工作: Issue.send(:include,RedmineRequireIssueAllowedToChangeAssignee::Patches::IssuePatch) 我知道在IssuePatch中有一些要覆盖或添加到Issue类的东西. 然后我found this,解释使用send,这让我困惑,为什么不使用Issue.include? 主要问题是:这个方法在哪里定义,它有什么作用? 更新:related question 解决方法
你不能只是做包含因为它是一个私有方法,所以你使用send来绕过ruby可见性控制.使用send,您可以调用任何方法,甚至是私有方法(如本例所示).
它被定义为Module#include,并且当以模块作为参数调用时,它将该模块的所有实例方法附加到接收器(在您的情况下,是Issue类).这是Ruby中非常常见的习语. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |