Je voulais faire une association polymorphique dans mon projet, donc je suis le guide des rails pour le faire mais j'ai: NameError: uninitialized constant DashboardAssignment::Assignable
erreur.Polymorphics in Rails 'constante non initialisée' erreur
Modèles:
DashboardAssignment:
class DashboardAssignment < ActiveRecord::Base
belongs_to :dashboard
belongs_to :assignable, polymorphic: true
validates :dashboard, presence: true
validates :assignable, presence: true, uniqueness: { :scope => :dashboard }
end
utilisateur:
class User < ActiveRecord::Base
has_many :dashboard_assignments, as: :assignable
has_many :dashboards, through: :dashboard_assignments
end
Groupe:
class Group < ActiveRecord::Base
has_one :dashboard_assignment, as: :assignable
has_many :laboratories_assignments, as: :lab_assignable
end
Tableau de bord :
class Dashboard < ActiveRecord::Base
has_one :building
has_many :dashboard_assignments
has_many :users, through: :dashboard_assignments, as: :assignable
end
Dans DashboardAssignment fichier Migration J'ai:
t.references :assignable, null: false, polymorphic: true, index: true
Lorsque je tente de créer un nouveau DashboardAssignment par DashboardAssignment.create(assignable: u)
où u = User.find(1)
il me donne l'erreur:
NameError: uninitialized constant DashboardAssignment::Assignable
from P:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/activerecord-4.2.6/lib/active_record/inheritance.rb:158:in `compute_type' ...
Am I faire quelque chose de mal?
Ma version rails est 4.2.6
Qu'est-ce que l'erreur vous dit est qu'il n'y a pas d'attribut ou une association appelée assignable sur la classe DashboardAssignment. Pouvez-vous s'il vous plaît poster votre modèle de tableau de bord s'il vous plaît? –
ok. ajouté modèle de tableau de bord – Levvy
Je suis tout à fait sûr, votre problème existe en raison de: has_many: les utilisateurs, à travers:: dashboard_assignments, comme:: – bpieck