Ich versuche, mehrere polymorphe Beziehungen (has_many_polymorphs plugin
) von einem einzigen Elternteil zu gleichen Kindern zu definieren.Mehrere has_many_polymorphs in einem Modell
Hinweis hat viele Zuschauer
Hinweis hat viele Redakteure
Zuschauer entweder Benutzer sein könnte oder Gruppen
Editoren entweder Benutzer sein könnte oder Gruppen
Permission ist das Assoziationsmodell mit note_id
, viewer_id
, viewer_type
, editor_id
, editor_type
Felder
Alles klappt wie so lange erwarten, wie ich nur eine has_many_polymorphs Beziehung in Anmerkung Modell
definiert habenStarten Sie nun Probleme erscheinen, wenn ich die zweite Beziehung
class Note < ActiveRecord::Base
has_many_polymorphs :viewers, :through => :permissions, :from => [:users, :groups]
has_many_polymorphs :editors, :through => :permissions, :from => [:users, :groups]
end
class Permission < ActiveRecord::Base
belongs_to :note
belongs_to :viewer, :polymorphic => true
belongs_to :editor, :polymorphic => true
end
Note.first.viewers << User.first # => [#<User id: ....>]
# >>>>>>>>
Note.first.editors << User.first
NoMethodError: You have a nil object when you didn't expect it!
The error occurred while evaluating nil.constantize
... vendor/plugins/has_many_polymorphs/lib/has_many_polymorphs/base.rb:18:in `instantiate'
Ich habe versucht, die Verfeinerung der Definition von has_many_polymorphs
hinzufügen, aber es hat nicht funktioniert. Nicht einmal mit einem STI-Modell für ViewPermission < Permission
und EditPermission < Permission
.
Alle Gedanken/Workarounds/Problem Zeiger sind willkommen.
Rails 2.3.0
Ich glaube, Sie brauchen etwas Interpunktion in Ihrem zweiten Absatz hinzufügen ... –