[英]Converting MySQL tinyint booleans (0/1) to PHP booleans (true/false)
[英]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.