2013-11-28 7 views
1

я нашел следующий фрагмент кода:полей классов в Ruby (? Mongoid)

class Store 
    include ::Mongoid::Document 
    include ::Mongoid::Timestamps 

    field :cache_class, type: String 

    index({cache_class: 1, key: 1}, {background: true}) 

    validates :cache_class, presence: true 
    end 

Are field и validates вызовы методов? Если да, может ли кто-нибудь объяснить мне этот рубиновый синтаксис?

спасибо!

ответ

2

Это встроенный доменный язык (встроенный DSL или только EDSL). field, index и validates - это методы класса, которые настраивают поведение будущих объектов. Этот синтаксис не должен выглядеть как мир программы. Вместо этого он должен выглядеть как язык конфигурации.

Эти методы обычно определяются в одном из включенных классов (::Mongoid::Document или ::Mongoid::Timestamps в этом случае).

Этот шаблон довольно распространен в рубине.

Смежные вопросы