2013-07-15 34 views
0

我有三個型號(StudentDocumentCV)。 Document具有單表繼承。我的問題是如何創建一個關閉@student的CV?我試過@student.documents.new(type: CV)但是這給了我:的has_many,新,單表繼承

錯誤

NoMethodError: undefined method `safe_constantize' for #<Class:0x007fd1819adad0> 

我知道我能做到CV.new(owner: @student)但這並不覺得優雅。

模式

class Student < ActiveRecord::Base 
    has_many :documents, 
    as: :owner 
end 

class Document < ActiveRecord::Base 
    has_many :documents, 
    as: :owner 
end 

class CV < Document 
end 
+1

不簡歷必須是在創建時的String?然後在文檔對象上調用#becomes來設置正確的類。 – Novae

+0

嘗試'@ student.documents.new(類型:「CV」)' –

回答

0

你的答案是:

@cv = @student.documents.build 
@cv.type = "CV" 

ActiveRecord::Associations::CollectionProxy#build

+0

這不會構建一個'CV'對象。這將構建一個「文檔」對象。 –

+0

所以'@ student.cvs.build'不會有任何直接關係。除非你創建了這樣的關係。所以你必須先構建文檔,然後設置它的類型'@cv.type =「CV」'。我用這個更新了我的答案:-) – DaveTsunami