轻松获取数据库条目表示的值 ("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
我正在尝试显示会员的当前状态,例如,临时、活跃或退休,在页面视图中在数据库中指定为“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