Ruby on rails Ruby Gem如何与rails中特定模型字段的活动模型通信?
我正在使用以下命令创建一个名为my_gem的gemRuby 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是一种语法糖,可以同时扩展类和实例方法。您的问题是
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
和returnhello 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