ruby-on-rails – 了解Ruby on Rails发送(:include

ruby-on-rails – 了解Ruby on Rails发送(:include,第1张

概述我正在尝试开发一个 Redmine插件,我开始阅读 documentation,并学习了很多Ruby和很多Ruby on Rails. (我是PHP / Python / js家伙) 然后我开始查看其他插件,我找到了this code.我找不到足够的信息来完全理解这行代码如何工作: Issue.send(:include, RedmineRequireIssueAllowedToChangeAss 我正在尝试开发一个 Redmine插件,我开始阅读 documentation,并学习了很多Ruby和很多Ruby on Rails. (我是PHP / Python / Js家伙)

然后我开始查看其他插件,我找到了this code.我找不到足够的信息来完全理解这行代码如何工作:

@H_502_13@Issue.send(:include,RedmineRequireIssueAllowedtochangeAssignee::Patches::IssuePatch)

我知道在IssuePatch中有一些要覆盖或添加到Issue类的东西.

然后我found this,解释使用send,这让我困惑,为什么不使用Issue.include?

主要问题是:这个方法在哪里定义,它有什么作用?

更新:related question

解决方法 你不能只是做包含因为它是一个私有方法,所以你使用send来绕过ruby可见性控制.使用send,您可以调用任何方法,甚至是私有方法(如本例所示).

where is this method include defined and what does it does?

它被定义为Module#include,并且当以模块作为参数调用时,它将该模块的所有实例方法附加到接收器(在您的情况下,是Issue类).这是Ruby中非常常见的习语.

总结

以上是内存溢出为你收集整理的ruby-on-rails – 了解Ruby on Rails发送(:include全部内容,希望文章能够帮你解决ruby-on-rails – 了解Ruby on Rails发送(:include所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1283362.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存