【问题标题】:user must exist error message in rails用户必须在 rails 中存在错误消息
【发布时间】:2018-05-23 23:12:21
【问题描述】:

获取错误信息

用户必须存在

每当我尝试创建新帖子时。

我首先安装了friendly_id gem,然后我安装了设计gem并创建了一个设计用户模型。之后,我生成了设计视图。从那里我为 Post 创建了一个带有标题描述主体和 slug 的脚手架

我在帖子模型中创建了一个belongs_to :user,在用户模型中创建了一个has_many :posts。然后我生成了一个生成这个的迁移。

class AddUserReferenceToPosts < ActiveRecord::Migration[5.1]
  def change
    add_reference :posts, :user, foreign_key: true
    add_foreign_key :posts, :users
  end
end

我知道我可以进入post模型并将其更改为

belongs_to :user, optional: true

为了克服错误消息,但我进入终端并使用

创建了一个用户
u = User.create(email: "dave@gmail.com", password: "password")

成功登录,但我仍然收到错误消息。需要一些关于我做错了什么的帮助。

【问题讨论】:

  • 请您提供您的帖子控制器和您的 routes.rb 文件的内容
  • 我认为您所缺少的是您的每个帖子都需要一个用户。因此,在您的答案中发布帖子控制器代码。我认为您在创建帖子对象时没有定义用户。

标签: ruby-on-rails ruby activerecord devise ruby-on-rails-5.1


【解决方案1】:

您必须将外键参数添加到允许列表:

private 
    def posts_params
      params.require(:post).permit(:your_posts_params, :user_id)
    end
end

【讨论】:

    【解决方案2】:

    您必须更改您的帖子控制器,并将此代码添加到操作 new 和 create。

    def new
      @post = current_user.posts.build
    end
    
    def create
      @post = current_user.posts.build(post_params)
    
      ...
    end
    

    【讨论】:

      【解决方案3】:

      您需要用户和帖子之间的关联,因此您无法在没有父母的情况下创建孩子!您需要先创建用户,然后您可以在控制台 irb 中使用它来创建帖子:User.create!(name: "name", "any other fields") 然后像这样创建帖子 irb: Post.create!(text:"一些内容”,user_id: 1) 这将为用户注释创建帖子假设您将创建的用户的 id 为 1 也很抱歉来自我的手机并将发布

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-24
        • 2021-07-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多