STI и полиморфные связи

Рейтинг: 0Ответов: 1Опубликовано: 07.09.2014

Есть модель User и две модели Developer и Buyer

class User < ActiveRecord::Base
has_many :events, as: :parent, dependent: :destroy
end
class Buyer < User end
class Developer < User end  

и модель Event

class Event < ActiveRecord::Base
belongs_to :parent, polymorphic: true
end

Вопрос в следующем: при добавлении нового объекта в таблицу events parent_type принимает значение User, возможно ли заставить его принимать значение Developer (или Buyer)?

Ответы

▲ 1

Судя по всему Вы пытались сделать так:

class Buyer < ActiveRecord::Base 
   has_many :events, as: :parent, dependent: :destroy
end
class Developer < ActiveRecord::Base
 has_many :events, as: :parent, dependent: :destroy
end

class Event < ActiveRecord::Base
    belongs_to :parent, polymorphic: true
end

Тогда в parent_type будет Buyer или Developer.

(наследование от User если нужно для чего-то ещё, то можно вернуть добавив колонку type в таблицу users, подробнее тут хорошо расписано)