2015-08-10 3 views
0

Я получил эту ошибку:Rails ошибок ActiveRecord :: SubclassNotFound

enter image description here

код выглядит следующим образом:

def save_as_template 
    obj_attributes = self.attributes 
    obj_attributes.delete("id") 

    course = CourseTemplate.new(obj_attributes) 
    course.start_date = nil 
    course.active = false 
    course.save 

Но я не могу это сделать:

self.inheritance_column = :_type_disabled 

потому что тогда все пошло не так ... что я могу сделать?

class CourseTemplate < CourseObject 
    #self.inheritance_column = :_type_disabled 
    validates_presence_of :name 
    validates_presence_of :description 
    validates_numericality_of :instant_questions, :check_questions, :repeat_questions, :mindmail_interval, :mindmail_reminder_interval 
    before_validation :before_validation_set_default_values 


class CourseObject < ActiveRecord::Base 
    belongs_to :lecturer, :class_name => "User" 
    has_many :lessons, ->{order "lessons.sort ASC"}, :dependent => :destroy 

    validate :language_allowed 

class Course < CourseObject 

    self.inheritance_column = :_type_disabled 
    has_and_belongs_to_many :clients, :join_table => :clients_courses # TODO c 
    has_many :memberships, :dependent => :destroy 
    has_many :users, :through => :memberships 
    has_and_belongs_to_many :user_groups 
+2

Как выглядит ваша модель 'CourseTemplate'? Каковы его столбцы? –

+0

Я добавил coruse/course_object/course_template model – Felix

+1

Я думаю, что это потому, что 'obj_attributes [: type] = 'Course'', но у вас нет класса под названием' Course

ответ

1

Я думаю, только предположение: obj_attributes хэш-прежнему содержит значение для inheritance_column ключа - это не должно быть в хэш передается CourseTemplate.new. Но вы должны dup хеш вместо того, чтобы удалить его из хэша атрибутов - я не уверен, но изменение этого хэша напрямую может повлиять на объект, на который вы звоните save_as_template.

Не трогайте свойство inheritance_column. При использовании конструкторов для этих объектов это управление выполняется active_record.

obj_attributes = self.attributes.dup 
    obj_attributes.delete("id") 
    obj_attributes.delete("inheritance_column") 

    course = CourseTemplate.new(obj_attributes) 
+0

и как я могу его решить? .. – Felix

+0

course_template и course_object являются одинаковыми, они различаются только по типу – Felix

+0

Или вы помещаете их в иерархию классов ssame –