2011-11-23 108 views
1

假設我有一個Item模型,它有一個布爾值onshelf如何在保存到數據庫之前設置布爾值?

我想明確地設置onshelftrue通過做一些像self.onshelf = true。但是我在書中學到了Agile Web Development,不同的數據庫存儲的布爾值完全不同,而且恐怕我的做法可能會在未來破壞我的應用。

所以我想知道,如果我設置像self.onshelf = true布爾值,Rails會執行類型轉換(正確)?

我知道toggle!方法也可以做到這一點,但我不喜歡它立即保存結果。我想先設置每個屬性,然後讓after_save決定。

謝謝!

回答

1

ActiveRecord(及其數據庫驅動程序)將以最適合您所使用的特定數據庫的方式存儲布爾值。

+0

謝謝!但[這篇文章](http://stackoverflow.com/questions/7150069/rails-3-1-problem-saving-record-with-not-null-boolean-mysql-column-false-saves)給我一些關注。看來ActiveRecord將'false'解釋爲'null'。 –

+1

這很有趣;也許這是司機的一個錯誤。這絕對是意想不到的。如果您有權訪問數據庫遷移,則可以將該列設置爲'not null default [對於數據庫爲假]。這實際上是我通常自己做的。 – seand

1

ActiveRecord應該將ruby布爾值轉換爲相應DB中最接近的東西。

+0

是否有可能將'false'轉換爲'null'而不是'0'? (說一些數據庫將'0'視爲'假')[這傢伙報告這樣的問題](http://stackoverflow.com/questions/7150069/rails-3-1-problem-saving-record-with-not -null-boolean-mysql-column-false-saves) –

相關問題