我试图显示会员的当前状态,例如临时,有效或已退休,在数据库中指定为" 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代码,我能以某种方式将它放在模型中,而不是它所使用的每个视图吗?在此先感谢您的帮助。
答案 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