我正在升级我的投资组合网站,在那里我上传了一个新的视频文件,当我在本地服务器上对其进行检查时,页面看起来不错,然后由于安全问题,我决定更新链轮和引导程序。
我同时运行了bundle update
和bundle install
,升级到链轮3.2.7和Bootstrap 4.1.2,而之前是4.0alpha。
我已经消除了Bootstrap宝石的可能性。
在此之后,我的博客页面(只有我的博客页面)出现以下错误消息:
PG :: UndefinedColumn:错误:列blogs.topic_id不存在
来自_blog_sidebar.html.erb
:
<div class="sidebar-module">
<h4>Topics</h4>
<% @side_bar_topics.each do |topic| %>
<p><%= link_to topic.title, topic_path(topic) %></p>
<% end %>
</div>
它指向每个循环,说我在topic_id
模型上缺少Blog
的字段吗?
如何通过更新gem来实现?有人发生过吗?如果是这样,您如何解决?
这是我的schema.rb
文件,您可以在其中看到topic_id
:
ActiveRecord::Schema.define(version: 20170930175841) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
create_table "topics", force: :cascade do |t|
t.string "title"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "blogs", force: :cascade do |t|
t.string "title"
t.text "body"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "slug"
t.integer "status", default: 0
t.bigint "topic_id"
t.index ["slug"], name: "index_blogs_on_slug", unique: true
t.index ["topic_id"], name: "index_blogs_on_topic_id"
end
我遵守了has_many
和belongs_to
的约定:
https://guides.rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association
blog.rb
:
class Blog < ApplicationRecord
enum status: {draft: 0, published: 1}
extend FriendlyId
friendly_id :title, use: :slugged
validates_presence_of :title, :body, :topic_id
belongs_to :topic
has_many :comments, dependent: :destroy
def self.special_blogs
all
end
def self.featured_blogs
limit(2)
end
def self.recent
order("created_at DESC")
end
end
topic.rb
:
class Topic < ApplicationRecord
validates_presence_of :title
has_many :blogs
def self.with_blogs
includes(:blogs).where.not(blogs: {id: nil})
end
end
答案 0 :(得分:0)
我通过运行rake db:drop
,rake db:create
,rake db:migrate
来修复它。