我有一个超类(模型)Measurement 和两个子类:WeightMeasurement 和 LengthMeasurement。
然后我得到了一个 Person 类,其中包含许多 WeightMeasurements 和 LengthMeasurements。
问题是在为 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