Raj*_*hra 5 activerecord ruby-on-rails
我有两个带有enum字段的模型:
class TempAsset < ApplicationRecord
enum state: { running: 0, stopped: 1, terminated: 2 }
end
class AssetCredential < ApplicationRecord
enum map_status: { pending: 0, inprogress: 1, passed: 2, failed: 3 }
end
Run Code Online (Sandbox Code Playgroud)
当我从第一个表中选择列时,它会从枚举中给出正确的值:
TempAsset
.joins('INNER JOIN asset_credentials
ON temp_assets.instance_id = asset_credentials.instance_id')
.pluck(:state)
.uniq
# ["stopped", "running"]
Run Code Online (Sandbox Code Playgroud)
但是,当我从连接表中选择列时,它会给出数字:
TempAsset
.joins('INNER JOIN asset_credentials
ON temp_assets.instance_id = asset_credentials.instance_id')
.pluck(:map_status)
.uniq
# [0, 3, 2, 1]
Run Code Online (Sandbox Code Playgroud)
那么,我应该这样做:
AssetCredential.map_statuses.key(0) => "pending"
AssetCredential.map_statuses.key(1) => "inprogress"
Run Code Online (Sandbox Code Playgroud)
或者有没有更好的方法来做同样的事情?
dem*_*mir -1
尝试这个:
AssetCredential.joins('INNER JOIN temp_assets ON asset_credentials.instance_id = temp_assets.instance_id').pluck(:map_status).uniq
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1720 次 |
| 最近记录: |