Ruby on Rails 응용 프로그램에 작은 클래스 계층 구조가 있습니다. 나는 하위 클래스에 의해 상속되기를 원하는 몇 가지 정보를 가지고 클래스를 기술하는 지원에 관심을 갖기 위해 노력했다.ActiveSupport :: Concern을 사용하여 클래스 메서드를 상속하는 방법
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}
내가 원하는대로 클래스 상속을 어떻게 만들 수 있습니까?
감사합니다. @evanbikes! 'class_attribute' 도우미는 내가 아주 비슷한 것을 성취하는데 필요한 것입니다! – Dorian