簡體   English   中英

Rails布爾值-True和False與1和0

[英]Rails booleans - True and False vs 1 and 0

我最近在我正在處理的項目中為Comment模型添加了一個新的“ submitted”屬性。 在遷移中,我創建了這樣的列: add_column :comments, :submitted, :boolean 注意:我正在使用MySQL作為數據庫。

我希望此屬性的默認值為false ,因此我添加了一個before_create方法,如下所示:

before_create :default_values

def default_values
  self.submitted = false
end

這對我來說似乎是正確的,但是每當我嘗試添加新注釋時,都不會發生任何事情,並且控制台會顯示錯誤。 我的create方法是通過AJAX完成的,控制器通過JS正確地處理了該方法,但是由於某種原因,它默認使用format html並試圖重定向到另一個頁面。

經過一番試驗之后,我將default_values方法更改為如下所示:

def default_values
  self.submitted = 0
end

在那之后一切正常。 這與Rails將tinyint用於數據庫中的布爾字段有關嗎? 我本以為可以在false / true和1/0之間進行轉換,這足夠聰明。

有趣的是,我嘗試通過控制台創建一個新注釋,並且能夠將submitted屬性設置為false ,沒有任何問題。 為什么我必須使用整數而不是true / false值?

布爾值很聰明,只需使用:

object.submitted?

作為訪問方法...

為您的遷移添加默認值:

add_column :comments, :submitted, :boolean, :default => false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM