Etkin kayıtlar ile miras nasıl uygulanır? Örneğin, bir sınıf Animal, class Dog ve class Cat istiyorum.Ruby on Rails'de Active Record devralma nasıl uygulanır?
Model ve veritabanı tablosu eşleştirmesi nasıl olur?
Etkin kayıtlar ile miras nasıl uygulanır? Örneğin, bir sınıf Animal, class Dog ve class Cat istiyorum.Ruby on Rails'de Active Record devralma nasıl uygulanır?
Model ve veritabanı tablosu eşleştirmesi nasıl olur?
Raylar, Tekli Tablo Kalıtımını destekler. AR docs itibaren
:
Aktif Record ( Base.inheritance_column üzerine yazarak değiştirilebilir) varsayılan "tip" adlı tarafından bir sütunda sınıfın adını depolayarak tarafından miras verir .
class Company < ActiveRecord::Base; end class Firm < Company; end class Client < Company; end class PriorityClient < Client; end
Eğer Firm.create do (: name => "37signals"), bu kayıt tip = "Firma ile şirketlere tabloda kaydedilecektir Bu miras bu gibi bakarak o demektir ". Daha sonra bu satırı Company.find (: önce, "name =‘ 37signals "") kullanarak tekrar getirebilir ve bir Firm nesnesini döndürür. Eğer tabloda tanımlanan bir türü sütun yoksa
, tek masa miras tetiklenir edilmeyecektir. Bu durumda, alt sınıflarında olduğu gibi, alt sınıflarında, aralarında ayrım yapan için ya da aralığına özgü bir sihir gibi çalışabilirsiniz.
Oldukça iyi öğretici burada: http://juixe.com/techknow/index.php/2006/06/03/rails-single-table-inheritance/
Modeller:
class Animal < ActiveRecord::Base; end
class Dog < Animal; end
class Cat < Animal; end
Göç:.
class CreateAnimals < ActiveRecord::Migration
def self.up
create_table :animals do |t|
# Other attributes...
t.string :type
end
end
def self.down
drop_table :animals
end
end
ActiveRecord tek tabloya haritalama miras hiyerarşileri destekler (Single-table inheritance Tablo olur adını taşıyan bir sütun type
var ctual sınıfı ve diğer sınıfa özel sütunları seçmek için kullanılır.
here numaralı belgede gösterildiği gibi çok tablo devralma eşlemesi uygulamak mümkündür, ancak bu özel yol taşınabilir değildir, AFAIK.
Bir cevabı kabul etmek isteyebilirsiniz –