2012-09-19 117 views
1

我最近在我正在開發的項目中爲評論模型添加了一個新的「已提交」屬性。在遷移中,我創建了這樣的列: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而沒有任何問題。是否有一個原因,我必須使用整數而不是真/假值?

+0

什麼從是錯誤安慰?您可以在遷移字段中添加默認值(下圖)。請注意,如果對象是使用提交的設置爲true或false創建的,則在創建時將其更改爲false。我需要看到這個錯誤才能知道爲什麼「= false」不起作用,因爲它認爲它應該有。 –

+0

Marlin,我並不太在意你提出的情況,因爲當創建這個模型的一個實例時,默認情況下'submit'應該總是被設置爲false。最初在遷移時做這件事是一個好主意,但我很好奇Rails爲什麼不讓我使用「false」。我收到的錯誤看起來好像是控制器跳過'format.js'渲染並直接進入HTML,這意外地導致了404。 – Zajn

回答

2

添加默認值遷移:

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

這肯定會起作用,但我想我更關心的是爲什麼確切Rails不允許我在'before_create'方法中使用'false'。 – Zajn

+0

我打算接受這個答案,因爲這可能是我應該首先完成的。 – Zajn

4

這是聰明布爾值,只需使用:

object.submitted? 

作爲訪問方法...

相關問題