あなたが正しくあなたを理解している場合、投稿と投稿は動画または写真のいずれかになります。 Jaryl氏はあなたが持っているものはおそらく理解しやすい/扱いやすいと言っていますが、単なる表の継承やポリモフィックな関連付けを使用することができればと思っています。
STI - 例(アジャイルウェブ開発のレールと第3版)ですから、あなたが人を経由してそれを見つけることができます
Customer.create(:name => 'John Doe', :email => '[email protected]', :balance => 78.29)
顧客を作成する場合
create_table :people, :force => true do |t|
t.string :type
#common attributes
t.string :name
t.string :email
#attributes for type=Customer
t.decimal :balance, :precision => 10, :scale => 2
#attributes for type=Employee
t.integer :reports_to
t.integer :dept
#attributes for type=Manager
#none
end
class Person < ActiveRecord::Base
end
class Customer < Person
end
class Employee < Person
belongs_to :boss, :class_name => "Manager", :foreign_key => :reports_to
end
class Manager < Person
end
x = Person.find_by_name('John Doe')
x.class #=> Customer
x.email #=> [email protected]
x.balance #=> 78.29
x.some_customer_class_method # will work because the Person.find method returned a Customer object
あなたが持つことができるので
class Post < ActiveRecord::Base
end
class Photo < Post
end
class Video < Post
end
、その後、あなたはPost.allによってそれらすべてを見つけることができるが、(あなたが写真や動画ではありませんポストを持っている場合は、ポストオブジェクト)を使用すると、写真とビデオオブジェクトを取り戻すだろう
を忘れないでください文字列:dbテーブルに入力してください
http://stackoverflow.com/questions/3231889/rails-sti-with-inheriting-children私は、STIを子オブジェクトにする方法を理解しようとしています。したがって、与えられた例では、 Person belongs_to:company "と" Company has_many:persons "のどちらかですか? – Rabbott