Si te entiendo correctamente, tienes Publicaciones y las publicaciones pueden ser de video o foto. como dijo Jaryl, lo que tienes es probablemente el más fácil de entender/manejar; sin embargo, si quieres ser elegante, puedes usar una sola tabla de herencia o asociaciones polimórficas.
STI - ejemplo (de desarrollo web ágil con rieles 3ª edición)
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
lo tanto, si se crea un cliente
Customer.create(:name => 'John Doe', :email => '[email protected]', :balance => 78.29)
a continuación, puede encontrarlo a través persona
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
Entonces podría tener
class Post < ActiveRecord::Base
end
class Photo < Post
end
class Video < Post
end
y entonces se podría encontrar a todos ellos por Post.All pero se podrían obtener de vuelta de fotografía y vídeo (objetos y objetos postales si tiene mensajes que no son foto o vídeo)
no se olvide el cadena: escriba en su tabla db
http://stackoverflow.com/questions/3231889/rails-sti-with-inheriting-children Estoy tratando de averiguar cómo tener el objeto de ITS un niño, por lo que con el ejemplo dado, ¿cómo voy a codificar " La persona pertenece a: compañía "y" Compañía tiene_muy: personas "? – Rabbott