У меня есть Измерение суперкласса (модели) и два подкласса: WeightMeasurement и LengthMeasurement.
Затем у меня есть класс Person, который имеет столько же WeightMeasurements и LengthMeasurements.
Проблема в том, что при создании нового измерения для Человека я хочу использовать общий контроллер, который будет обрабатывать измерения как веса, так и длины.
Однако способ, которым я обычно строю измерения Человека, будетбыть доступным для них через родителя (человека).Как person.weight_measurement.build.Проблема в том, что я не знаю, что здесь поставить ... person..build?
# Base-model, includes "type" column in database.
class Measurement < ActiveRecord::Base
belongs_to :person
end
# model subclass
class WeightMeasurement < Measurement
end
# model subclass
class LengthMeasurement < Measurement
end
class Parent < ActiveRecord::Base
has_many :weight_measurements, :dependent => :destroy
has_many :length_measurements, :dependent => :destroy
end
# Single controller for "Measurements"
class MeasurementsController < ApplicationController
...
def new
person = Person.find(params[:person_id])
#
normally would do this, but because I am using STI,
# I don't know that it is a Person's "weight" measurement we are creating
#
# @measurement = @person.weight_measurements.build
#
...
end
...
end