- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我的 Ruby on Rails 应用程序中有一个小的类层次结构。我试图用一些我希望子类继承的信息来添加对描述类的支持的关注。这个问题可以用这个小样本来说明:
module Translatable
extend ActiveSupport::Concern
included do
end
module ClassMethods
def add_translatable_fields(field_and_types)
@translatable_fields ||= {}
@translatable_fields.merge! field_and_types
end
def translatable_fields
@translatable_fields
end
end
end
class Item
include Translatable
add_translatable_fields({name: :string})
end
class ChildItem < Item
end
class AnotherItem < Item
add_translatable_fields({description: :text})
end
puts "Item => #{Item.translatable_fields.inspect}"
puts "ChildItem => #{ChildItem.translatable_fields.inspect}"
puts "AnotherItem => #{AnotherItem.translatable_fields.inspect}"
我希望这个示例代码能够返回
Item => {name: :string}
ChildItem => {name: :string}
AnotherItem => {name: :string, description: :text}
但不幸的是,ChildItem 和 AnotherItem 没有添加在父类上设置的类“属性”,而是返回
Item => {name: :string}
ChildItem => nil
AnotherItem => {description: :text}
如何使类继承按我希望的方式工作?
最佳答案
看起来子类正确地从父类继承,但问题是类变量。
我打赌你能做到
class ChildItem < Item
add_translatable_fields(Item.translatable_field)
end
但我刚刚了解到这些 Rails 助手,它似乎更像是您要找的东西。
http://api.rubyonrails.org/classes/Class.html#method-i-class_attribute
您可以在包含的 block 中定义 class_attribute
,它应该按照您希望的方式继承给所有子级。
关于ruby-on-rails - 如何使用 ActiveSupport::Concern 继承类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27368833/
我担心存储常量的位置: module Group::Constants extend ActiveSupport::Concern MEMBERSHIP_STATUSES = %w(accep
我编写了一个生成器,它为用户创建了一个关注点,以包含在他们的模型中。它在 Rails 4.1.8 上正常工作,但在 Rails 4.2.0 上,我收到以下消息: LoadError: Unable t
单一职责原则和关注点分离有什么区别? 最佳答案 Single Responsibility Principle (SRP)- give each class just one reason to ch
我担心 Windows Azure 上的数据和应用程序的安全性...我在一本书上读到 Windows azure 通过服务级别协议(protocol)提供安全性。 谁能告诉我使用什么类型的身份验证机制
我需要在我的项目中处理大约 120 个图像和 120 个音频文件。我将所有图像放在 drawable 中,并将音频文件放在 raw 文件夹中,图像应通过单击按钮或滑动手势进行更改,同时应播放相应的短音
在另一个问题中,有人告诉我在我的java程序中实现以下内容。但是,我是 Java 的新手,我不知道如何开始将我的简单程序转换成这种结构: Data Access Layer (read/write d
我正在研究 CodeSchool 的 RubyBits,我做了一个我只是不理解的练习:“确保 AtariLibrary 类只包含 LibraryUtils 模块,并让 ActiveSupport::C
我知道 include 用于将模块方法作为实例方法访问,而 extend 用于将模块方法作为类方法访问。 对于 ActiveSupport::Concern 某处我看到写成, module Test
我正在尝试在不同的 Rails 项目中扩展现有的关注点。 该模块存在于我需要的 gem 中: module Foo extend ActiveSupport::Concern included
我得到了下面的链接来解决与类和实例方法相关的问题。 http://www.fakingfantastic.com/2010/09/20/concerning-yourself-with-active-
简短问题 1 Django's documentation 中定义的生产环境由什么构成大约 1/2 的路程? 简短问题 2 如果多人同时访问数据库,是否有管理界面损坏数据库的记录案例? 背景 我已使用
所以对于我的应用程序,当我点击运行时 iOS 模拟器中的 tableview 布局是正确的并且符合我的预期。然而,当我在 Main.storyboard 中查看 tableview 的布局时,布局并不
我正在使用 EF,想知道其他人如何将数据上下文与实体分开。 基本上我需要一层来访问数据上下文(模型对象)以调用 SaveChanges() 等。其他层需要访问实体类型本身。因此,例如,如果一个方法返回
考虑以下代码: require 'active_support/concern' module Inner end module Outer extend ActiveSupport::Conce
有an article在 ActiveSupport::Concern钩子(Hook)。这是 Rails 中的一个有效实现: module ActionController class Base
release notes iOS 10 有一个名为Wide Color 的部分。 让我感到困惑的是这一行:如果您的应用依赖 UIKit 来限制组件值(无论您是创建颜色还是为其组件值请求颜色),您需要
我有一些模型在其他路径上共享相同的功能。所以我决定将这些方法放在一个模块中,并在模型中设置路径。我的问题是我无法访问我的模块中的属性。 型号: class Job 在这一行: File.open(R
我正在尝试用大量数据替换 SSRS 报告中字段中的文本。以下是否有任何性能问题? =iif(Fields!Field1.Value="Word 1", "Word 2", Fields!Field1.
注意:在您考虑将此问题标记为其他类似问题的重复之前,请注意这个问题是关于 Rails 中的问题,而我搜索过的其他问题涉及 Controller 。毫无疑问,我已经发现,这涉及到关注。 我在 app/m
我从来不明白为什么必须使用 ActiveSupport::Concern 用于 mixins 而不是普通模块。对于 ActiveSupport::Concern 提供的内容(至少在 Rails 5 中
我是一名优秀的程序员,十分优秀!