我正在使用postgressql 9.3.1和Rails 4.1.4,并且遇到了一些奇怪的事情:默认设置为false的值保存为true!
在schema.rb
中,我有:
create_table "practice_scores", force: true do |t|
...
t.boolean "visualized", default: false
t.boolean "selected", default: false
...
end
我有:
practice_score = PracticeScore.new(assessment: @respondent.assessment, practice: @practice, user: @respondent.user)
@respondent.questions << Question.new(practice: @practice, practice_score: practice_score)
我认为这会在保存practice_score
时自动保存Question
,而练习_score的selected
值将为false
。当我使用rails控制台检查对象时,它是true
。
有些铁路可能会覆盖这个价值吗?
答案 0 :(得分:1)
这是奇怪的行为。两个记录都节省了吗?我相信你需要先保存才能将其主键用作另一个对象的外键。另一种选择是使用#create
。
要进行调试,请使用bang方法。 #save!
或#create!
如果控制台无效,控制台会因为错误而爆炸。
如果这没有解决问题,我会进行架构重置。
命令为rake db:schema:load
。这将获取schema.rb文件并完全基于该文件创建新表。请注意,这将清理您的数据库,因此如果开发中有大量数据,您可以导入.dump
文件。