轻松获取数据库条目表示的值 ("active") 而不是数据库条目 ("2") 本身

easily getting the value ("active") a database entry represents rather than the database entry ("2") itself

我正在尝试显示会员的当前状态,例如,临时、活跃或退休,在页面视图中在数据库中指定为“1”、“2”、“3”。
这是我的代码:

<% if user_signed_in? %> #at the top of the page
<% unless @user.member_status.blank? %> #later in the body of the page
<div>Member status: <%= @user.member_status %> </div>
<% end %>
<% end %>

代码正确 return输入了一个数字。有没有一种方法可以轻松 return 一个值,例如 Active,而无需编写大量代码,例如 if "1", return "Provisional", elsif "2", return"Active"等

如果我确实需要编写那种 if / then 代码,我可以以某种方式将它放在模型中,而不是它所用的每个视图中吗?预先感谢您的帮助。

您可以将 member_status 声明为枚举属性。示例:

class User < ActiveRecord::Base
  enum member_status: { provisional: 1, active: 2 }
end

更多信息:http://edgeapi.rubyonrails.org/classes/ActiveRecord/Enum.html

使用 Case 语句。

<% case @user.member_status %>
<% when 1 %>
  <%= "Provisional" %>
<% when 2 %>
  <%= "Active" %>
<% end %>

另一种选择是简单的散列:

class User < ActiveRecord::Base
  STATUSES = {1: 'Provisional', 2: 'Active'}

  def display_status
    STATUSES[member_status]
  end
end