0
我在想如何在模型中拥有各种属性。例如:如何使你自己的属性,例如。 “devise:authenticable”在ruby/rails中
Property < ActiveRecord::Base
locatable, saleable ...
这些是mixin吗?还是有另一种方法来实现这一点?例如。设计的方式有:
我在想如何在模型中拥有各种属性。例如:如何使你自己的属性,例如。 “devise:authenticable”在ruby/rails中
Property < ActiveRecord::Base
locatable, saleable ...
这些是mixin吗?还是有另一种方法来实现这一点?例如。设计的方式有:
关于开源的东西的很大一部分是你可以看看,找出答案。我已经删除了一些不相关的线(宝石/设计-2.2.3/lib目录/色器件/ models.rb:83):
def devise(*modules)
devise_modules_hook! do
include Devise::Models::Authenticatable
selected_modules.each do |m|
mod = Devise::Models.const_get(m.to_s.classify)
if mod.const_defined?("ClassMethods")
class_mod = mod.const_get("ClassMethods")
extend class_mod
if class_mod.respond_to?(:available_configs)
available_configs = class_mod.available_configs
available_configs.each do |config|
next unless options.key?(config)
send(:"#{config}=", options.delete(config))
end
end
end
include mod
end
end
end
全部遗赠是做(除了看家的东西)是通过自动循环您传入的符号组成的划痕阵列,并将它们(或有时使用extend
)与Devise::Models::#{property_name}
一起放入您的课程中。
你绝对可以这样做。无论你应该做什么都取决于你在做什么。通常,只看到include SomeModule::SomeClass
远远不如cutsey助手方法。
您需要创建一个自定义模块。 The:lockable [module](https://assets1.assembla.com/code/donodon/git/nodes/v0.1/vendor/gems/devise-1.0.7/lib/devise/models/lockable.rb?type = tag)被定义为[here](https://assets1.assembla.com/code/donodon/git/nodes/v0.1/vendor/gems/devise-1.0.7/lib/devise/models/lockable.rb ?类型=标记)。 –