Ruby on Railsを初めて使用しているので、モデル関連についてあまりよく分かりません。しかし、ここに私の問題があります:Ruby on Rails - has_many "kind"に基づいて
私は "has_many:items"というプロジェクトリソースを持っています。各項目には名前と種類があります(その種類は項目の種類を指定します)。私はこのような... - 値「種類」に基づいて、異なる団体を作りたい:
class Item < ActiveRecord::Base
belongs_to :project, :dependent => :destroy
has_many :sports, :class_name => 'NormalSport' # if kind = 'normal_sport'
has_many :sports, :class_name => 'SuperSport' # if kind = 'super_sport'
has_many :sheep # if kind = 'sheep'
has_many :drinks # if kind = 'drink'
end
ので、この項目は「normal_sport」、「super_sport」、「羊」または「どちらかとすることができる意味しますドリンク"。アイテムは、私が言うことができるようにしたいと思いnormal_sport(のようなもの)であれば:その後、
Project.first.items.first.sports.all
そして「スポーツ」「NormalSport」のクラスになります。
これは誤った方法です。私は多相協会を見ていましたが、それはそのような関連性のようには見えません。これはどの団体ですか? 「アイテム」はちょうど「中型マンモデル」なのですか?
ありがとうございます! (と私の悪い英語のため申し訳ありません)
敬具 アレクサンダー
は、両方の答えをいただき、ありがとうございます。しかし、ルートが気に入らないようです。私は(アイテム-部分プロジェクトのすべての項目をループ内)のような何かを言う場合:<%= link_to 'Destroy', [@project, item], :confirm => 'Are you sure?', :method => :delete %>
それ希望、それまでのように動作しません。
/projects/1/super_sport/4
そして、それは「羊」-itemであれば、それは
/projects/1/sheep/5
私はどのように言うことができ、それらのものに行く:それは「スーパースポーツ」-itemであれば、それはURLを使用していますALLは次の場所に移動する必要があります。
/projects/:project_id/items/:item_id
これらはすべてItemsControllerを使用します。彼らがすべてこのルートを使うことができればうれしいでしょう。私はこのハックで試しました:しかし、検証は中断します。私はあなたが私の問題を理解して欲しいです