容易获得数据库条目的值(“活动”)而不是数据库条目(“2”)本身

时间:2015-01-09 17:33:17

标签: ruby database ruby-on-rails-4

我试图显示会员的当前状态,例如临时,有效或已退休,在数据库中指定为" 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 %>

代码正确返回一个数字。有没有办法轻松返回一个值,例如Active,而无需编写大量代码,例如,如果&#34; 1&#34;,返回&#34;临时&#34;,elsif&#34; 2&# 34;,返回&#34;激活&#34;等。

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

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

使用Case语句。

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

答案 2 :(得分:0)

另一种选择是简单的哈希:

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

  def display_status
    STATUSES[member_status]
  end
end