Наследование классов в Ruby on Rails - PullRequest
0 голосов
/ 30 июля 2011

Я строю это маленькое приложение с ruby ​​на рельсах.В приложении у меня есть следующие заикания моделей, которые я не уверен, является ли это лучшей практикой.(Я на самом деле разработчик Java)

Есть класс person, который я использую как суперкласс, и есть класс персонала и классы клиентов, наследуемые от класса person.Чтобы достичь этого, у меня есть:

class Person < ActiveRecord::Base
end

class Staff < ActiveRecord::Base
    belongs_to :person, :polymorphic => true, :dependent => :destroy 
end

class CreateStaffs < ActiveRecord::Migration
  def self.up
    create_table :staffs do |t|
      t.references :person, :polymorphic => true, :null => false 
      ....

Во-первых, то, что я сделал, работает нормально, но я делаю лучшее?

Следующее, что я пытаюсь сделать, - это создатьформа, которая создает личность, объекты персонала и связывает их.И я застрял на двух моделях в одной форме.У кого-нибудь есть предложения?

Спасибо, Кевин Рен

1 Ответ

1 голос
/ 30 июля 2011

То, что вы делаете здесь, это не использование Person как суперкласса Staff, но вы создаете связь между ними. Вместо этого вы хотите взглянуть на наследование одной таблицы. Вы по существу хотите это:

class Person < ActiveRecord::Base
end

Class Staff < Person
end

Кроме того, вам необходимо иметь поле «type» в вашей таблице Person, которое Rails использует, чтобы выяснить, к какой модели принадлежит данная запись. См. документы для ActiveRecord для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...