我最近在我正在開發的項目中爲評論模型添加了一個新的「已提交」屬性。在遷移中,我創建了這樣的列:add_column :comments, :submitted, :boolean
。 注:我正在使用MySQL作爲數據庫。Rails布爾值 - True和False與1和0
我想這個屬性有false
默認值,所以我增加了一個before_create
方法,例如:
before_create :default_values
def default_values
self.submitted = false
end
這似乎正確的我,但每當我會嘗試添加一個新評論,沒什麼會發生,控制檯會顯示錯誤。我的創建方法是通過AJAX完成的,並且控制器通過JS正確處理了該方法,但出於某種原因,它默認爲format html
,並嘗試重定向到其他頁面。
有點打轉轉後,我改變了我的default_values
方法是這樣的:
def default_values
self.submitted = 0
end
一切的工作之後的罰款。這是否與Rails使用tinyint
作爲數據庫中的布爾字段有關?我會認爲它足夠聰明,可以在false/true和1/0之間進行轉換。
有趣的是,我試圖通過控制檯創建一條新評論,並且能夠將我的submitted
屬性設置爲false
而沒有任何問題。是否有一個原因,我必須使用整數而不是真/假值?
什麼從是錯誤安慰?您可以在遷移字段中添加默認值(下圖)。請注意,如果對象是使用提交的設置爲true或false創建的,則在創建時將其更改爲false。我需要看到這個錯誤才能知道爲什麼「= false」不起作用,因爲它認爲它應該有。 –
Marlin,我並不太在意你提出的情況,因爲當創建這個模型的一個實例時,默認情況下'submit'應該總是被設置爲false。最初在遷移時做這件事是一個好主意,但我很好奇Rails爲什麼不讓我使用「false」。我收到的錯誤看起來好像是控制器跳過'format.js'渲染並直接進入HTML,這意外地導致了404。 – Zajn