0

我有一個記錄在用戶狀態的PostgreSQL是布爾和它的屬性是「真」和「假」。我想表明「真」爲「活動和‘假’成‘不活躍’我如何與查詢或任何東西在模型加做Rails的更改記錄值

控制器:。

 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+\-.][email protected][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 

回答

3

在模型中添加這個方法,當你調用@user.status,它會顯示 '有效' 或 「無效」。

def status 
    self.status? ? "Active" : "Inactive" 
end 

希望,它會有所幫助。由於

+0

上面的代碼是給我無法識別的錯誤,所以我修改了一點:DEF User.status self.status? 「激活」:「未激活」 結束問題是它仍然沒有將值更改爲激活。感謝您的幫助 – user2618465

+0

您將其定義爲類方法,您不需要執行此操作。請在這裏粘貼你的錯誤。 –

+0

那麼它解決了我直接寫入索引頁面的功能。再次感謝。 – user2618465

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的傢伙的建議)

最後,你可以使用的I18n來喲字符串翻譯ü如果你有一個mulitlingual頁:

# en.yml 
en: 
    status: 
    true: 'active' 
    false: 'inactive' 

# user_helper.rb 
def status_text(user) 
    I18n.t("statys.#{user.status.to_s}") 
end