ruby-on-rails – Rails在模型中设置默认布尔值
发布时间:2020-12-17 03:03:59 所属栏目:百科 来源:网络整理
导读:我正在Rails编写一个简单的博客应用程序,版本3.2.8.我已将“posts”资源搭建如下: rails g scaffold post title:string body:string islive:boolean 我希望默认情况下将islive设置为false,我试图在我的模型中这样做.我还决定我不希望它可用于大规模分配,所
我正在Rails编写一个简单的博客应用程序,版本3.2.8.我已将“posts”资源搭建如下:
rails g scaffold post title:string body:string islive:boolean 我希望默认情况下将islive设置为false,我试图在我的模型中这样做.我还决定我不希望它可用于大规模分配,所以我编写了我的模型如下: class Post < ActiveRecord::Base attr_accessible :body,:title before_save :default_values def default_values self.islive = false end end 我还从表单中删除了islive字段.问题是当我尝试使用上面的模型创建一个新帖子时,它不会保存.控制台看起来像这样: Started POST "/posts" for 127.0.0.1 at 2012-10-14 18:23:30 +0100 Processing by PostsController#create as HTML Parameters: {"utf8"=>"?","authenticity_token"=>"/lNa21JBeBz/H2cYLqAsF8uWr1frLV88WsOVKzOqwb4=","post"=> {"title"=>"sample title","body"=>"the body"},"commit"=>"Create Post"} (0.1ms) begin transaction (0.0ms) rollback transaction Rendered posts/_form.html.erb (1.8ms) Rendered posts/new.html.erb within layouts/application (2.5ms) Completed 200 OK in 29ms (Views: 26.3ms | ActiveRecord: 0.1ms) 没有任何东西得救.我只是得到了开始事务回滚事务但是,如果我将default_values更改为: def default_values self.islive = 'false' end 一切正常,它保存得很好,islive有一个虚假的价值.即使我只是做这样的事情: def default_values self.islive = false Rails.logger.debug self.islive end 然后保存工作. 有人可以解释为什么会这样做吗? 解决方法
before_save和其他回调如果返回false则终止保存.这正是你所做的.如果你忘记它,这是一个陷阱.你可以在最后一行放一些真的(甚至是零):
def default_values self.islive = false true end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |