2016-09-04 8 views
0

Я сделал таблицу «hospital_review» и таблицу «hospital_review_comments» с соотношением 1: N на рубине на рельсах. Файл миграции таблицы «hospital_review» выглядит следующим образом.My has_many - принадлежит к таблицам в рубине на рельсах, похоже, не связан.

class CreateHospitalReviews < ActiveRecord::Migration 
def change 
    create_table :hospital_reviews do |t| 
     t.string :written_time 
     t.string :writter 
     t.integer :user_id 
     t.string :category 
     t.string :hospital_name 
     t.text :content 
     end 
    end 

и "hospital_review_comments's is is this this this.

def change 
    create_table :hospital_review_comments do |t| 
     t.integer :user_id 
     t.integer :post_id 
     t.string :writter 
     t.string :written_time 
     t.text :content 

     t.timestamps null: false 
    end 
    end 

Файл модели таблицы «hospital_review» выглядит следующим образом.

belongs_to :user 
has_many :hospital_review_comments 

Стол «hospital_review_comments» выглядит следующим образом.

belongs_to :user 
belongs_to :hospital_review 

Я хотел показать каждый обзор больницы и комментарии, написанные на нем, так что я запрограммировал коды ниже в разделе «show.html.erb».

<% @post.hospital_review_comments.each do |comment| %> 
<p><strong><%=comment.user.username%></strong> <%=comment.content%></p> 

и это действие шоу в файле контроллера.

def show 
@post = HospitalReview.find(params[:id]) 
@hospital_comment_writer = User.where(id: session[:user_id])[0] 
end 

но ошибка occcured с сообщением

'SQLite3::SQLException: no such column:'. 

Я попытался 'foregin_key' в файле модели hospital_review_comments таблицы, но это не сработало. Я не могу понять причину возникновения ошибки. Помощь Plz!

ответ

1

У вас не хватает hospital_review_id в таблице hospital_review_comments

+0

Я изменил post_id к hospital_review_id, и. теперь это работает! Большое спасибо – felipa

+0

, вы можете принять мой ответ. Зеленая отметка. ниже секции голосования вверх и вниз. –

0

Я думаю, что вы ошибочно добавили post_id в таблице hospital_review_comments, которая должна быть hospital_review_id, что воля к работе.

Иначе вы можете добавить опцию foreign_key в ассоциации следующим образом.

has_many: hospital_review_comments, foreign_key: 'post_id'