Есть ли возможность создавать объекты дочерней модели STI из базового класса STI? - PullRequest
0 голосов
/ 17 июня 2009

Учитывая следующую иерархию

class Content < ActiveRecord::Base end
class Page < Content end
class Post < Content end

Можно ли создать, например, содержимое страницы (косвенно) в следующем стиле:

c = Content.new c.type = Page c.title = 'test' c.save!

Похоже, что тип также является методом ruby ​​для объекта.

Ответы [ 2 ]

0 голосов
/ 18 июня 2009

Я бы порекомендовал сделать что-то подобное ...

klass = "Page"
klass.constantize.create(:title=>'title')

Если вы просто возитесь с атрибутом type, у вас не будет методов, которые вы переопределяете в подклассе вашего объекта.

0 голосов
/ 18 июня 2009

Определенно, но вы должны использовать write_attribute

c.write_attribute(:type, "Page")
c.save
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...