ruby-on-rails - 如何在 Controller Action 中切换 bool 属性

标签 ruby-on-rails ruby

我有一个操作可以简单地将 #active 属性切换到相反的 bool 状态:

  • 如果 @blog.active == true 然后更新它到非事件
  • 如果 @blog.active == false 然后更新它到事件

我在 Controller 中获得了以下自定义操作,但必须有一些 Rails 方法才能更优雅地执行此操作:

class BlogsController < ApplicationController

  ...    

  def toggle_active
    if @blog.active?
      @blog.update(active: false)
    else
      @blog.update(active: true)
    end
  end

end

是否有一种 Rails 方法可以将 bool 属性更新为相反的 bool 状态?

最佳答案

ActiveRecord 具有执行此操作的 toggletoggle! 方法。请记住,toggle! 方法会跳过验证检查。

class BlogsController < ApplicationController

  ...    

  def toggle_active
    @blog.toggle!(:active)
  end

end

如果你想运行验证你可以这样做

@blog.toggle(:active).save

您可以阅读方法的源代码 here

关于ruby-on-rails - 如何在 Controller Action 中切换 bool 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40620649/

相关文章:

ruby-on-rails - 'twitter/bootstrap/bootstrap.less' 没有找到

ruby-on-rails - Rails/Postgres 如果 hstore 值包含传递数组的值,如何查询它

ruby - Netbeans:导航 -> 去声明?

ruby - 使用 MongoDb 插入多条记录

java - 设置 Ruby/Java 构建/部署的最佳方式?

sql - Active Record查询通过关系在Rails has_many中查找符合所有条件的记录

ruby-on-rails - 使用动态掠夺者进行分面搜索

python - 结合 Python 和 Ruby 扩展模块

ruby-on-rails - Rails 回形针图像保存

ruby - Cocoapods 安装失败,无法构建 gem native 扩展