用户必须在rails中存在错误消息

时间:2017-12-10 04:22:13

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

获取错误消息

  

用户必须存在

我什么时候尝试创建一个新帖子。

我首先安装了friendly_id gem,然后我安装了devise 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

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

belongs_to :user, optional: true

通过错误消息,但我进入终端并使用

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

成功登录,我仍然收到错误消息。在我做错的事情上需要一些帮助。

3 个答案:

答案 0 :(得分:0)

您需要在用户和帖子之间进行协商,这样您就无法在没有父级的情况下创建孩子!你需要先创建用户然后你可以在控制台irb:User.create!(名称:&#34;名称&#34;,&#34;任何其他字段&#34;)中创建帖子使用,然后像这样创建帖子irb:Post.create!(文字:&#34;一些内容&#34;,user_id:1)这将为用户注释创建帖子假设您将创建的用户ID为1也对不起来我的手机并且将会发布

答案 1 :(得分:0)

您必须更改您的posts控制器,并将此代码添加到new和create动作中。

def new
  @post = current_user.posts.build
end

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

  ...
end

答案 2 :(得分:0)

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

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