スーパークラス (モデル) Measurement と、WeightMeasurement と LengthMeasurement の 2 つのサブクラスがあります。
次に、WeightMeasurements と LengthMeasurements と同じ数の Person クラスを取得しました。
問題は、人の新しい測定値を作成するときに、重量と長さの両方の測定値を処理する共有コントローラーを使用したいということです。
ただし、私が一般的に Person の測定値を構築する方法は、親 (Person) を介してそれらにアクセスすることです。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