【问题标题】:RUBY - Couldn't find User with 'id'=1RUBY - 找不到 'id'=1 的用户
【发布时间】:2016-07-11 05:51:44
【问题描述】:

我目前收到此错误:

ActiveRecord::RecordNotFound in MainController#index

在我销毁了一个自己持有的偏好之后。

错误:

ActiveRecord::RecordNotFound in MainController#index

找不到 'id'=1 的用户

def get_owner
    return User.find( self.owner );  // LINE WITH ERROR
end

这里是post.rb

class Post < ActiveRecord::Base
  enum status: [ :ps_normal, :ps_locked, :ps_blocked, :ps_protected ]
  enum sortable: [ :school, :company, :date ]

  validates :owner, presence: true

  def owner_name
    return self.get_owner.display_name;
  end

  def get_owner
    return User.find( self.owner );
  end

  def readable?
    return (self.status != :blocked ) ? true : false;
  end
end

更新#1

2.3.0 :001 > User.find(1)
User Load (1.2ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1  [["id", 1]]
ActiveRecord::RecordNotFound: Couldn't find User with 'id'=1
    from /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/relation/finder_methods.rb:324:in `raise_record_not_found_exception!'
    from /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/relation/finder_methods.rb:444:in `find_one'
    from /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/relation/finder_methods.rb:423:in `find_with_ids'
    from /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/relation/finder_methods.rb:71:in `find'
    from /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/querying.rb:3:in `find'
    from /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/core.rb:131:in `find'
    from (irb):1
    from /usr/local/rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/commands/console.rb:110:in `start'
    from /usr/local/rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/commands/console.rb:9:in `start'
    from /usr/local/rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/commands/commands_tasks.rb:68:in `console'
    from /usr/local/rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
    from /usr/local/rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/commands.rb:17:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in `<main>'

我应该如何解决这个问题?添加userid=1?

更新 #2

我在自己的用户名下删除了自己的偏好,并收到此错误。人们说我缺少 id=1,但我不确定如何将其重新添加到数据库中

【问题讨论】:

  • 你能打开一个 Rails 控制台(在相同的环境中)并检查User.find(1) 的输出吗?根据错误,id=1 的用户很可能不在您的数据库中。
  • 你的意思是:destroyed a preference, which was held by myself
  • @Michael,如果您觉得我的回答对solved your issue 有帮助,请通过单击答案旁边的绿色复选标记将其从灰色切换为已填充,将其标记为“accepted”。这个将帮助社区将注意力集中在未回答的问题上。

标签: ruby-on-rails ruby activerecord


【解决方案1】:

根据您的控制台输出,没有 ID 为 1 的用户。因此,如果您需要id=1 的用户,您可以这样做。

首先,使用与已删除用户相同的详细信息创建一个用户。用户成功创建后,转到 Rails 控制台并:

u = User.last
# => #<User id: x, ...... >
u.update_column(:id, 1)

请在此处参考Rails API doc 了解更多信息。根据你使用的 Rails 版本选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-17
    • 2014-04-24
    • 2017-04-19
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多