Я хотел сделать полиморфную ассоциацию в своем проекте, поэтому я следую за направляющими рельсов, но я получил: NameError: uninitialized constant DashboardAssignment::Assignable
ошибка.Полиморфизм в неинициализированной константе Rails
Модели:
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
Пользователь:
class User < ActiveRecord::Base
has_many :dashboard_assignments, as: :assignable
has_many :dashboards, through: :dashboard_assignments
end
Группа:
class Group < ActiveRecord::Base
has_one :dashboard_assignment, as: :assignable
has_many :laboratories_assignments, as: :lab_assignable
end
Dashboard :
class Dashboard < ActiveRecord::Base
has_one :building
has_many :dashboard_assignments
has_many :users, through: :dashboard_assignments, as: :assignable
end
В DashboardAssignment миграции файл у меня есть:
t.references :assignable, null: false, polymorphic: true, index: true
Когда я пытаюсь создать новый DashboardAssignment по DashboardAssignment.create(assignable: u)
где u = User.find(1)
он дает мне ошибку:
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 что-то не так?
Моя Рельсы версия 4.2.6
Что ошибка говорят вам, что нет атрибута или ассоциации под названием присваивается классу DashboardAssignment. Можете ли вы, пожалуйста, разместить свою модель приборной панели, пожалуйста? –
ОК. добавлена модель Dashboard – Levvy
Я уверен, ваша проблема существует из-за: has_many: пользователи через:: dashboard_assignments, as:: assignable – bpieck