gpt4 book ai didi

ruby-on-rails - 试图了解 Controller 如何使用插件/模块

转载 作者:太空宇宙 更新时间:2023-11-03 17:27:24 25 4
gpt4 key购买 nike

好的,所以我正在使用一些模块/库/插件(不确定确切的名称),假设它是一个身份验证/授权插件,例如:http://github.com/technoweenie/restful-authentication

class HomeController < ApplicationController


some_module_name_here


end

现在只需在“some_module_name_here”上方添加代码,我就可以访问该模块中的方法。

让我从模块访问方法/对象的那行代码是做什么的?

是像在 java/c# 中那样声明一个变量吗:

public SomeModule _someModule; 

我知道插件/模块基本上是在幕后扩展类,但它是如何用一行代码做到这一点的?

是否以某种方式在构造函数中调用了它?

最佳答案

当您创建一个 ruby​​ 插件,并通过 environment.rb、bundler 或 require 调用将其加载到 Rails 应用程序时,方法将作为可以调用的“模块”加载。那些表现得像你所说的将有一个额外的方法称为 acts_as_list 或类似的东西。该方法所做的只是将模块的方法包含到调用该行的类中。

这是一个示例,您可以将其包含在应用程序的 lib 文件夹中并使用:

module Bellmyer
module Pointless
def self.included(base)
base.extend PointlessMethods
end

module PointlessMethods
def acts_as_pointless
unless included_modules.include? InstanceMethods
extend ClassMethods
include InstanceMethods
end
end
end

module ClassMethods
def pointless_class?
true
end
end

module InstanceMethods
def pointless_instance?
true
end
end
end
end

该模块可用于您应用中的任何 ruby​​ 类,但这些方法实际上不会加载,直到您调用 acts_as_pointless,然后使用列出的方法包含和扩展您的类。只有 acts_as_pointless 方法可立即用于模型。这是 ActiveRecord 插件的标准模式。

关于ruby-on-rails - 试图了解 Controller 如何使用插件/模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4015059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com