Mam modeluPojedynczy dziedziczenie tabeli z embeds_one mogoid
class Post
include Mongoid::Document
include Mongoid::Timestamps
embeds_one :comment
end
i muszę komentarz klasę
class Comment
include Mongoid::Document
include Mongoid::Timestamps
embedded_in :post
field :title
field :description
end
I mam innej klasy odziedziczone po komentarzu
class RecentComment < Comment
# certain methods
end
Teraz chcę aby móc utworzyć RecentComment
do post
, jeśli wykonam Post.last.build_comment(:_type => "RecentComment")
nowy komentarz nie będzie z _type:"RecentComment"
, i podobnie jeśli robię Post.last.build_recent_comment
, daje mi błąd mówiąc coś jak undefined method build_recent_comment for Post class
. Jeśli post
miałbym powinienem był bez problemu wykonać Post.last.build_comments({}, RecentComment)
. Ale nie wiem, jak zbudować obiekt z klasą RecentComment
w tym przypadku. Jeśli ktokolwiek mógłby pomóc, to byłoby gr8!
Uwaga: Używam gem 'mongoid', '~> 2.0.1'
Najprawdopodobniej wystarczy jednoznacznie wpisać każdy typ komentarza do klasy Post - embeds_one: old_comment; embeds_one: new_comment ... – monocle
Myślę, że to jeden z problemów z tworzeniem podklas komentarza. Czy jest jakaś korzyść z posiadania podklas? Możesz mieć wiele klas, które są takie same, z wyjątkiem nazw. Jeśli to możliwe, możesz chcieć refaktoryzować teraz, zanim stanie się trudniejsze. W przeciwnym razie nie jestem pewien, jak utworzyć skojarzenia, które chcesz, bez wyraźnego tworzenia każdego z nich jako osadzonego dokumentu. – monocle
, ale wszystkie klasy pochodne mają takie same pola i właściwości jak komentarz, więc czy będzie to właściwe, aby wszystkie z nich miały inny osadzony dokument? –