2016-03-22 12 views
0

this guide'u takiben Rails in Single Table Inheritance üzerinde çalışıyorum.Ruby'de Ray Üzerindeki Tek Tablo Kalıtımındaki Toplama

SuperClass: şu şekildedir: Ben çalışıyorum sınıflardır Makaleler
Alt sınıf: Öğreticiler, Projeler, Düşünceler
Hepsi 'Yorum'

Yani ben içerirler Bu makalelerin tümünü görüntüleyebilir ve bunları türüne göre filtreleyebilir. Ancak, bir alt sınıfın yeni bir nesnesini yaratmakta zorlanıyorum. İşte

#articles_controller.rb 
class ArticlesController < ApplicationController 

def type 
    Article.types.include?(params[:type]) ? params[:type] : "Article" 
end 

def type_class 
    type.constantize 
end 

def index 
    puts "The type is: " + type 
    #@articles = Article.all 
    @articles = type_class.all 
    @type = type 
end 

def new 
    @article = type_class.new 
end 

def edit 
    @article = type_class.find(params[:id]) 
end 

def show 
    @article = type_class.find(params[:id]) 
end 



#show.html.erb 
<p> 
<strong>Title:</strong> 
<%= @article.title %> 
</p> 

<p> 
<strong>Text:</strong> 
<%= @article.text %> 
</p> 

<div id="comments"> 
<h2>Comments</h2> 
<%= render @article.comments %> 
</div> 

<h2>Add a comment:</h2> 
<%= render 'comments/form' %> 


<%= link_to 'Edit', edit_article_path(@article) %> 
<%= link_to 'Back', articles_path %> 

benim makale modelidir: Burada

ilgili kod snippet'idir ben tip Tutorialının yeni Madde nesne oluşturmak mümkün değilim

class Article < ActiveRecord::Base 

has_many :comments, dependent: :destroy 
validates :title, presence: true, 
length: { minimum: 5 } 

scope :projects, -> { where(type: 'Project')} 
scope :thoughts, -> { where(type: 'Thought')} 
scope :tutorials, -> { where(type: 'Tutorial')} 

self.inheritance_column = :type 

def self.types 
    %w(Tutorial Project Thought) 
end 

end 

ama işlerken ilişkili yorumlar, konsol aşağıdakileri görüntüler:

Mysql2::Error: Unknown column 'comments.tutorial_id' in 'where clause': SELECT `comments`.* FROM `comments` WHERE `comments`.`tutorial_id` = 29 
sql sorgusunun nedeniçerdiği konusunda kafam karıştı Düz bir kimlik yerine. Bunu nasıl değiştireceğinizle ilgili herhangi bir öneriniz var mı?

cevap

1

type raylar tarafından ayrılmıştır, bu doğru yolda götürdü, kind veya type_of bu sütunun adını değiştirmeyi deneyin ve tam cevap olsa o hatayı

+0

çözülüp çözülmediğini görmek. – Abundance

İlgili konular