sti и has_many в рельсах - PullRequest
       1

sti и has_many в рельсах

6 голосов
/ 25 июня 2010
class Register < User
end

class Admin < User
end

class Project < ActiveRecord::Base
  has_many :admin, :class => 'User', :conditions => "type = 'admin'"
  has_many :registers, :class => 'User', :conditions => "type = 'registers'"
end

проблема здесь в том, что когда я использую project для has_many создания регистра или администратора, он не автоматизирует заполнение класса объекта в тип filed.

как это: project.admins.new.

как решить эту проблему?

1 Ответ

14 голосов
/ 25 июня 2010

Вы должны быть в состоянии указать отношения has_many напрямую, без необходимости сообщать Rails, что класс является User. Вот так:

class User < ActiveRecord::Base
  belongs_to :project
end

class Register < User    
end

class Admin < User
end

class Project < ActiveRecord::Base
  has_many :admins
  has_many :registers

  def make_new_admin
    ad = admins.create(:name => "Bob")
    # ad.type => "Admin"
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...