Module: Reform::Form::Composition::ClassMethods

Defined in:
lib/reform/form/composition.rb

Instance Method Summary collapse

Instance Method Details

#model(main_model, options = {}) ⇒ Object

Same as ActiveModel::model but allows you to define the main model in the composition using :on.

class CoverSongForm < Reform::Form

model :song, on: :cover_song


30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/reform/form/composition.rb', line 30

def model(main_model, options={})
  super

  composition_model = options[:on] || main_model

  handle_deprecated_model_accessor(composition_model)  unless options[:skip_accessors] # TODO: remove in 1.2.

  # FIXME: this should just delegate to :model as in FB, and the comp would take care of it internally.
  [:persisted?, :to_key, :to_param].each do |method|
    define_method method do
      model[composition_model].send(method)
    end
  end

  alias_method main_model, composition_model # #hit => model.song. # TODO: remove in 1.2.
end

#model_classObject

include Reform::Form::ActiveModel::ClassMethods # ::model.



15
16
17
# File 'lib/reform/form/composition.rb', line 15

def model_class # DISCUSS: needed?
  @model_class ||= Reform::Composition.from(representer_class)
end

#property(name, options = {}) ⇒ Object



19
20
21
22
23
# File 'lib/reform/form/composition.rb', line 19

def property(name, options={})
  super.tap do |definition|
    handle_deprecated_model_accessor(options[:on]) unless options[:skip_accessors] # TODO: remove in 1.2.
  end
end