Мои таблицы has_many - own_to в ruby on rails, похоже, не связаны между собой.
Я сделал таблицу "hospital_review" и таблицу hospital_review_comments с соотношением 1:N на рубине на рельсах. Файл переноса таблицы Hospital_review выглядит следующим образом.
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' похож на это.
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
но ошибка произошла с сообщением
'SQLite3::SQLException: no such column:'.
Я попробовал 'foregin_key' в файле модели таблицы hospital_review_comments, но это не сработало. Я не могу понять причину, по которой произошла ошибка. Пожалуйста, помогите!
2 ответа
Вам не хватает hospital_review_id
в вашей таблице hospital_review_comments
Я думаю, что вы ошибочно добавили post_id
в таблице hospital_review_comments, которая должна быть hospital_review_id
Вот воля к работе.
Еще вы можете добавить foreign_key
Вариант в ассоциации следующий.
has_many: hospital_review_comments, foreign_key: 'post_id'