Ruby on rails Ruby mixin最佳实践
Ruby\Rails新手,真丢脸:( 我正在开发一个供个人使用的引擎(简单的管理面板)。我想要的是能够配置我的主应用程序的模型,如下所示:Ruby on rails Ruby mixin最佳实践,ruby-on-rails,ruby,Ruby On Rails,Ruby,Ruby\Rails新手,真丢脸:( 我正在开发一个供个人使用的引擎(简单的管理面板)。我想要的是能够配置我的主应用程序的模型,如下所示: class User < ActiveRecord::Base include Entropy::Configurable entropy_config do form_caption 'Editing user' end end 问题是,当我在@object上调用entropy\u config时,我无法从可配置模块访问@@
class User < ActiveRecord::Base
include Entropy::Configurable
entropy_config do
form_caption 'Editing user'
end
end
问题是,当我在@object上调用entropy\u config时,我无法从可配置模块访问@@config。我做错了什么?首先,你做错了。Rails是MVC体系结构中的一个框架。让你的模型知道表单标题是错误的。为此,我将使用rails i18n gem。为了便于讨论,这里有一些未经测试的代码可能会回答您的问题:
module Entropy
module Configurable
def self.included(base)
## to call entropy_config in model class
base.send :extend, ClassMethods
end
def entropy_config(key)
self.class.config[:user][key]
end
module ClassMethods
cattr_accessor :config
def entropy_config (&block)
self.config ||= {}
class_eval &block
end
def form_caption(arg)
// skipping class identification
self.config[:user][:form_caption] = arg
end
end
end
end
请参阅以获取更多信息你说没有访问权限是什么意思,变量不存在?谢谢!交易不仅仅是关于标题,更多是关于管理配置,例如表单字段集,或者列表中的字段。我仍然认为模型不适合它。如果你不想在视图中定义字段,你应该创建一些单独的看看activeadmin是如何工作的,顺便说一句……作为rails提示:当你需要一些组件时,搜索rubygems.org(或ruby toolbox.com),因为很可能有人已经开发了该组件:)
module Entropy
module Configurable
def self.included(base)
## to call entropy_config in model class
base.send :extend, ClassMethods
end
def entropy_config(arg)
## ... I'm missing this part
end
module ClassMethods
@@config = { ... }
def entropy_config (&block)
class_eval &block
end
def form_caption(arg)
// skipping class identification
@@config[:user][:form_caption] = arg
end
end
end
end
module Entropy
module Configurable
def self.included(base)
## to call entropy_config in model class
base.send :extend, ClassMethods
end
def entropy_config(key)
self.class.config[:user][key]
end
module ClassMethods
cattr_accessor :config
def entropy_config (&block)
self.config ||= {}
class_eval &block
end
def form_caption(arg)
// skipping class identification
self.config[:user][:form_caption] = arg
end
end
end
end