更新:これについてもう少し考えた後、この質問にはポリモーフィズムとSTIの両方が含まれていると思います。
私が次のものを持っているとしましょう:
class Vehicle < ActiveRecord::Base
belongs_to :dealership
...
end
class Car < Vehicle
...
end
class Truck < Vehicle
...
end
Car モデルと Truck モデルの属性は同じですが、モデル内のロジックが異なるため、すべて Vehicles テーブルを使用するだけです。
誰かが新しい車両レコードを作成し、それが「車」か「トラック」かを選択できる汎用フォームを作成したいと考えています。バックエンドでは、このフォームは一般的な「車両」レコードではなく、「車」または「トラック」レコードを作成する必要があります。
質問: Rails フォームでこのオプションをどのように表示しますか? 具体的には、抽象基本モデルの子型をリストする方法はありますか、および/またはこれらを (たとえば) フォームの Select 要素として提示する簡単な方法はありますか?
車とトラックの 2 つの異なるフォームを作成するのではなく、車またはトラックを作成できるフォームを作成しようとしている理由は、最終的には、これらのモデルを親である "Dealership" にネストしたいからです。新しい車両を作成し、オプションとして「車」または「トラック」を選択できるだけでなく、ユーザーが「ディーラー」をロードしてすべての車を表示/編集できるネストされたフォームを使用できるようにしたいと考えていますそして、その販売店に所属するトラックを 1 つの形にまとめます。accepts_nested_attributes_for
のような単純な関連付けを使用して設定する方法は知っていますがVehicle belongs_to :dealership
、Vehicle から継承する子モデルに設定する方法がわかりません。