我在postgresql中有一条用户状态记录,它是布尔值,其属性为“true”和“false”。我想将“true”显示为“active”,将“false”显示为“inactive”。如何使用查询或任何要在模型中添加的内容。
控制器:
def index
@users = User.reorder("id ASC").page(params[:page]).per_page(10)
@count = 0
end
型号:
class User < ActiveRecord::Base
has_many :orders
has_many :order_statuses
attr_accessible :first_name, :last_name, :email, :password,
:password_confirmation, :code
validates :first_name, presence: true
validates :last_name, presence: true
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/i
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }, uniqueness: { case_sensitive: false }
validates :password, length: { minimum: 6}
has_secure_password
before_save { self.email = email.downcase }
before_create :create_remember_token
def User.new_remember_token
SecureRandom.urlsafe_base64
end
def User.encrypt(token)
Digest::SHA1.hexdigest(token.to_s)
end
private
def create_remember_token
self.remember_token = User.encrypt(User.new_remember_token)
end
end
答案 0 :(得分:3)
在您的模型中添加此方法,当您致电@user.status
时,它会显示“有效”或“无效”。
def status
self.status? ? "Active" : "Inactive"
end
希望,这会有所帮助。感谢
答案 1 :(得分:1)
如果我理解正确,您希望向用户显示“有效”而非“无效”而非“无效”。
您可以在所有观看中执行以下操作:
@user.status? ? 'active' : 'inactive'
或者,如果你在一堆地方需要这个,你可以写一个帮手:
module UserHelper
def status_text(user)
@user.status? ? 'active' : 'inactive'
end
end
# and call it from your views like this:
<%= status_text(@user) %>
或者你可以把它放到一个模型方法中,如果你只需要与用户一起使用这个函数,并且它是主动方法(根据Rails Guy的建议)
如果你有一个多元化的页面,最后你可以使用I18n为你翻译字符串:
# en.yml
en:
status:
true: 'active'
false: 'inactive'
# user_helper.rb
def status_text(user)
I18n.t("statys.#{user.status.to_s}")
end