Rails Active record 查询返回 `nil` 尽管数据实际存在于数据库中

问题描述 投票:0回答:0

我试图通过如下活动记录查询来查询用户的角色

User.find(101).role
。这将返回
nil
.

这是下面正在执行的查询。

 User Load (0.1ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?  [["id", 101], ["LIMIT", 1]] => nil

但是当我在 SQLITE 控制台中执行上面显示的相同 SQL 查询时。用户记录出现。

sqlite> SELECT "users".* FROM "users" WHERE "users"."id" = 101;
101|Emelina Schinner|[email protected]|https://robohash.org/repellatdeseruntanimi.png?size=300x300&set=set1|Soluta itaque voluptate autem.|2023-04-30 15:15:36.459574|2023-04-30 15:15:36.459574|enda.klein|$2a$12$SGHU7aDi0Cg0dy/U7UVYsOBlNo8JHBBE.siETvnwgYEahNgC1qz4m||||||||||||||||zX87TZed1vcQHCR3AxWo|94907

(请不要介意空列...xD)

当我专门查询角色时,它也会出现在 SQLITE3 控制台中。

sqlite> SELECT "users".role FROM "users" WHERE "users"."id" = 101;
94907

这是我的用户模型

class User < ApplicationRecord
  acts_as_token_authenticatable
  
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable

  enum role: { admin: 75693, appuser: 94907 }
  validates :username, presence: true
  validates :email, presence: true, uniqueness: true
  has_many :group_permissions
  has_many :posts, dependent: :destroy
  has_many :friendships, dependent: :destroy
  has_many :comments, dependent: :destroy
  has_many :likes, dependent: :destroy
  has_many :friend_requests_from, class_name: 'FriendRequest', foreign_key: :friend_request_from_id, dependent: :destroy
  has_many :friend_requests_to, class_name: 'FriendRequest', foreign_key: :friend_request_to_id, dependent: :destroy
  has_and_belongs_to_many :groups
end

我好像不太明白为什么上面说的Active record查询返回

Nil
。任何与此相关的帮助解释将不胜感激。

ruby-on-rails sqlite activerecord
© www.soinside.com 2019 - 2024. All rights reserved.