Rails Enum 返回整数值,而不是字符串表示形式

seb*_*seb 4 postgresql ruby-on-rails ruby-on-rails-6

我有一个表,其中包含一个基于整数的列(状态),我将其用于 Rails 模型中的枚举属性。

在做的那一刻:

Post.select(:id, ..., :status)
Run Code Online (Sandbox Code Playgroud)

定义为:

enum status: { inactive: 0, active: 1, ... }
Run Code Online (Sandbox Code Playgroud)

它按预期返回所有内容,但状态列在其字符串值中返回为inactiveactive等。但我需要它作为整数。

我怎样才能得到它?

我目前只是使用ActiveRecord::Base.connection.execute并传递原始查询:

ActiveRecord::Base.connection.execute('select id, ..., status from posts')
Run Code Online (Sandbox Code Playgroud)

Pen*_*uin 5

你试过这个吗?

# Rails < 5
post = Post.find(123)
post.read_attribute(:status)

# Rails >= 5
post = Post.find(123)
post.read_attribute_before_type_cast(:status)
Run Code Online (Sandbox Code Playgroud)