Dam*_*ems 5 model ruby-on-rails extending mongoid
我正在使用mongoid和rails 3,并且最近遇到了一个非常棘手的问题,我需要一个建议.
我正在研究CMS,其中一个想法是CMS将提供一些基本的模型定义,如果需要,最终用户可以使用自己的定义和控件扩展基本类,并将它们保存在不同的集合(表)中.
class DcPage
include Mongoid::Document
field a ....
belongs_to b ....
validates a ....
end
class MyPage < DcPage
field c ....
validates c ....
end
Run Code Online (Sandbox Code Playgroud)
直到最后一个版本的mongoid这个工作(很少黑客),数据将保存到my_pages集合.由于某些问题,mongoid不再支持此行为,数据始终保存到dc_pages集合.
在解释我的问题时,mongoid团队建议我使用ActiveSupport :: Concern并为我提供了一个示例.如果扩展类在同一源文件中定义,那么它的工作正常.顺便说一句.从未发生在实践中.
module CommonBehaviour
extend ActiveSupport::Concern
included do
field :subject, type: String, default: ''
# ...
end
end
class DcPage
include Mongoid::Document
include CommonBehaviour
end
class MyPage
include Mongoid::Document
include CommonBehaviour
end
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现如果我在第二个文件中需要基本源文件,它可以工作.看起来像这样:require'/some/path/to/my/gem/app/models/dc_page.rb
你现在能看到我的痛苦吗?基本源文件当然会被备份到gem中,因此成为一个移动目标.
请帮我更好的解决方案.
由TheR
| 归档时间: |
|
| 查看次数: |
1150 次 |
| 最近记录: |