Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby Gem如何与rails中特定模型字段的活动模型通信?_Ruby On Rails_Ruby_Ruby On Rails 3_Gem_Bundler - Fatal编程技术网

Ruby on rails Ruby Gem如何与rails中特定模型字段的活动模型通信?

Ruby on rails Ruby Gem如何与rails中特定模型字段的活动模型通信?,ruby-on-rails,ruby,ruby-on-rails-3,gem,bundler,Ruby On Rails,Ruby,Ruby On Rails 3,Gem,Bundler,我正在使用以下命令创建一个名为my_gem的gem bundle gem my_gem 当对象访问特定模式字段时,可以对其执行某些操作/事件 我希望在我的_gem中使用的功能 是从 线索就是通过模块扩展用户类。您可以直接或通过一些ruby monkey补丁来完成。退房 还有gem ebtry文件 更新: 还有一个更详细的rails指南,它使用ActiveSupport::Concern做同样的事情,ActiveSupport::Concern是一种语法糖,可以同时扩展类和实例方法。您的问题是

我正在使用以下命令创建一个名为my_gem的gem

bundle gem my_gem
当对象访问特定模式字段时,可以对其执行某些操作/事件

我希望在我的_gem中使用的功能 是从


线索就是通过模块扩展用户类。您可以直接或通过一些ruby monkey补丁来完成。退房 还有gem ebtry文件

更新:
还有一个更详细的rails指南,它使用ActiveSupport::Concern做同样的事情,ActiveSupport::Concern是一种语法糖,可以同时扩展类和实例方法。

您的问题是什么?到目前为止,您尝试了什么?很抱歉,我已经编辑了我的问题以进行模式细化。@SohairAhmad问题仍然没有。如果我尝试访问User.option,那么首先它将转到我的\u gem?是不是?如果通过gem模块扩展用户,它只会将所有模块函数作为类方法导入到用户类中。因此,gem中的
def option
变成了一个普通的用户类方法。这是一个很好的概念,谢谢。我的确切意思是,让我来做这个
User.option.key=value
,然后这一行应该转到My_gem的函数,它将
key=value
User.option
,我应该为
模块MyGem::Extension def my_gem(option)#将配置保存在一个类var@option=option end def option#chech@option class var#根据@option end end
执行工作这是另一个问题,用这一点信息很难理解。我建议你,首先用一个基本的Ruby类和没有任何模块的Ruby类方法来尝试这个概念,然后重新措辞并发布一个更具体的问题。仔细考虑如何从外部使用gem函数,并提供使用代码。最后,想象一下,您在常规类上所做的一切都可以扩展到一个模块,该模块可以被提取到一个gemYes,我实现了
include MyGem
到我的用户中,并将
my_gem:option
和return
hello world
传递到我的用户中,然后它就工作了。我肯定会带着新的问题回来,或者建立我自己的逻辑。谢谢你的帮助。我对此表示赞赏:)
class User < ActiveRecord::Base
  acts_as_taggable # Alias for acts_as_taggable_on :tags
  acts_as_taggable_on :skills, :interests
end
class User < ActiveRecord::Base
  my_gem :option
end
validates :title
module MyGem::Extension

  def my_gem(option)
    #save the config in a class var
    @option = option
  end

  def option
    #check @option class var 
    #do work depedning on @option
  end
end


#the straight way
class User 
  extend MyGem::Extension
  my_gem :option
end


#the ruby magic way, extending all ActiveRecords
ActiveSupport.on_load(:active_record) do
  extend MyGem::Extension
end

class User 
 my_gem :option
end