我有以下的(簡化)模型和遷移:Rails無法識別將變量設置爲'false'?
型號:
class User < ActiveRecord::Base
attr_readonly :contacted
validates :contacted, :inclusion => { :in => [true, false] }
def set_contacted
self.contacted = true
end
def unset_contacted
# self.contacted = false
self.contacted = "0"
end
end
遷移:
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.boolean :contacted, :null => false, :default => false
t.timestamps
end
end
end
正如你可以在我的模型註釋那種看到,設置變量contact
到錯誤的結果 - 我只能將它設置爲「0」。爲什麼?我不明白「假」是如何違反null約束的,對吧?
編輯: 澄清,我使用PostgreSQL和ActiveRecord。那我得到的錯誤是這樣的:
C:/Ruby193/lib/ruby/gems/activerecord-3.2.8/lib/active_record/validations.rb:56:in 'save!' Validation failed: ActiveRecord::RecordInvalid)
我得到的錯誤,即使我刪除從我的模式「驗證」的聲明,即使我刪除從遷移NULL約束。這與將屬性的值設置爲false有關。 ActiveRecord布爾值有一些奇怪的約束嗎?
您使用的是哪種數據庫系統?另外,請將錯誤消息添加到您的問題。 – 2012-11-30 08:40:17
我正在使用Postgresql。我收到了一連串的消息,主要是說ActiveRecord「保存!」失敗。 – Bryce
即使你不認爲它會有所幫助,將錯誤信息粘貼到問題中總是一個好主意。 – 2012-11-30 09:37:09