首页 > 解决方案 > 尝试将博客保存到数据库时,@blog.save 返回 false

问题描述

尝试保存新博客时,@blog.save 总是返回 false。这就是@blog 的样子: 博客 id:nil,标题:“新标题”,内容:“新内容”,users_id:1,created_at:nil,updated_at:nil

博客迁移

class CreateBlogs < ActiveRecord::Migration[5.2]
  def change
    create_table :blogs do |t|
      t.string :title
      t.text :content
      t.references :users, foreign_key: true

      t.timestamps
    end
  end
end

博客控制器代码

    def create
        @blog = Blog.new(blogParams)
        #render plain: @blog.inspect
        #return 
        if (@blog.save)
            render plain: "OK"
            #redirect_to 
        else
            render plain: @blog.inspect
        end
    end

    private def blogParams
        params.require(:newBlog).permit(:title, :content).merge(users_id: current_user.id)
    end

标签: ruby-on-rails

解决方案


在您的控制器 blogs_controllers.rb 中,在新方法 set 中:

@blog.user = current_user

并像这样更改您的 allowed_pa​​rams :

params.require(:newBlog).permit(:title, :content, users_id)

我希望我对你有所帮助。

编辑 :

如上所述,约定要求用户使用单数形式。让我们处理它,没关系:

在你的 blog.rb 模型中,你必须有这个:

belongs_to :user, :foreign_key => "users_id"

推荐阅读