• 哦...那破案了...这个写法 5.1 才有的... https://github.com/rails/rails/commit/e86524c0c5a26ceec92895c830d1355ae47a7034

    遗留项目用 https://github.com/rails/rails/issues/9454#issuecomment-310821406 这种写法,RoleCore 应该整体还是兼容 5.0 的

    新项目直接上 6.0 吧,或者至少 5.1 以上

  • 那我晚上到家 起一个裸的试试...不过我自己不用 cancancan 也,理论上也跟他无关

  • ➜  role_core git:(master) rails c
    Loading development environment (Rails 6.0.0)
    [1] pry(main)> pa = {"utf8"=>"✓", "authenticity_token"=>"w0o9CGy+oR9bqZaPpmglcNnKrzRS+e7/LFTZOPePAOWrHHwbuMABqzolmhB3u0vVUSRSPqs77BwKHKU8iObC+Q==", "role"=>{"name"=>"j", "permissions_attributes"=>{"task"=>{"create"=>"1", "destroy"=>"0", "update"=>"0", "update_my_own"=>"1", "destroy_my_own"=>"1"}, "production"=>{"create"=>"1", "destroy"=>"0", "accept"=>"0", "read"=>"1", "read_public"=>"0"}, "topic"=>{"create"=>"1", "destroy"=>"1", "accept"=>"1"}}}, "commit"=>"Update Role", "id"=>"7"}
    => {"utf8"=>"✓",
    "authenticity_token"=>"w0o9CGy+oR9bqZaPpmglcNnKrzRS+e7/LFTZOPePAOWrHHwbuMABqzolmhB3u0vVUSRSPqs77BwKHKU8iObC+Q==",
     "role"=>
      {"name"=>"j",
       "permissions_attributes"=>
        {"task"=>{"create"=>"1", "destroy"=>"0", "update"=>"0", "update_my_own"=>"1", "destroy_my_own"=>"1"},
         "production"=>{"create"=>"1", "destroy"=>"0", "accept"=>"0", "read"=>"1", "read_public"=>"0"},
         "topic"=>{"create"=>"1", "destroy"=>"1", "accept"=>"1"}}},
     "commit"=>"Update Role",
     "id"=>"7"}
    
    [2] pry(main)> params = ActionController::Parameters.new(pa)
    => <ActionController::Parameters {"utf8"=>"✓", "authenticity_token"=>"w0o9CGy+oR9bqZaPpmglcNnKrzRS+e7/LFTZOPePAOWrHHwbuMABqzolmhB3u0vVUSRSPqs77BwKHKU8iObC+Q==", "role"=>{"name"=>"j", "permissions_attributes"=>{"task"=>{"create"=>"1", "destroy"=>"0", "update"=>"0", "update_my_own"=>"1", "destroy_my_own"=>"1"}, "production"=>{"create"=>"1", "destroy"=>"0", "accept"=>"0", "read"=>"1", "read_public"=>"0"}, "topic"=>{"create"=>"1", "destroy"=>"1", "accept"=>"1"}}}, "commit"=>"Update Role", "id"=>"7"} permitted: false>
    
    [3] pry(main)> params.require(:role).permit(:name, permissions_attributes: {})
    => <ActionController::Parameters {"name"=>"j", "permissions_attributes"=><ActionController::Parameters {"task"=><ActionController::Parameters {"create"=>"1", "destroy"=>"0", "update"=>"0", "update_my_own"=>"1", "destroy_my_own"=>"1"} permitted: true>, "production"=><ActionController::Parameters {"create"=>"1", "destroy"=>"0", "accept"=>"0", "read"=>"1", "read_public"=>"0"} permitted: true>, "topic"=><ActionController::Parameters {"create"=>"1", "destroy"=>"1", "accept"=>"1"} permitted: true>} permitted: true>} permitted: true>
    
    [4] pry(main)> params.require(:role).permit(:name, permissions_attributes: {}).to_h
    => {"name"=>"j",
     "permissions_attributes"=>
      {"task"=>{"create"=>"1", "destroy"=>"0", "update"=>"0", "update_my_own"=>"1", "destroy_my_own"=>"1"},
       "production"=>{"create"=>"1", "destroy"=>"0", "accept"=>"0", "read"=>"1", "read_public"=>"0"},
       "topic"=>{"create"=>"1", "destroy"=>"1", "accept"=>"1"}}}
    
    [5] pry(main)> Role.new(params.require(:role).permit(:name, permissions_attributes: {}))
       (0.8ms)  SELECT sqlite_version(*)
    => #<Role:0x0000564b77c637e8
     id: nil,
     name: "j",
     permissions:
      #<Global:OptionsModel {:foo=>false, :bar=>false, :project=>{:create=>true, :destroy=>false, :update=>false, :read=>true, :read_public=>false, :task=>{:create=>true, :destroy=>false, :update=>false, :update_my_own=>true, :destroy_my_own=>true}}, :task=>{:read=>false, :create=>true, :destroy=>false, :update=>false}}>,
     type: "Role",
     created_at: nil,
     updated_at: nil>
    

    我在控制台根据你提供的日志模拟过滤请求的动作,还是复现不出来

    你的 Ruby 和 Rails 版本是多少呢?我应该在 5.2 和 6.0 都验证过的,你那边用我的 Dummy app 有问题么?

  • 这个帖子一直没有更新,虽然基本都没有变(大体只改了名字)不过可以看下 https://github.com/rails-engine/role_core 我忘记是不是有更新了,这 gem 我自己也在用,所以你提的这个问题有点奇怪

  • 贴一下你 控制器 action 的代码?

    params.require(:role).permit(:name, permissions_attributes: {}) 这样 accepts_nested_attributes 的写法是 Rails 的标准做法

    https://guides.rubyonrails.org/action_controller_overview.html#permitted-scalar-values

    之前没人提过这个问题也,我不太觉得这里能有问题

  • 好像是我正贴的网址错了... 后来听了华顺的建议 重构并放到 https://github.com/rails-engine/role_core 去了... 你试试...

  • 我那个 Git 的 dummy 应用么?

    Unpermitted parameters: task, production, topic 问题出在这了,我看看

  • 就这样写,这样写的意思是允许 permissions_attributes 里的任何内容,这个跟请求传入的数据的结构是一样的

  • 支持!

  • 你公司是为了赖掉裁员的赔偿金,可以去仲裁,就算公司进一步耍流氓拒不支付也算埋了个雷。

    其实直接裁员也是违规的,不过既然摊牌了,就算依法公司也会变着法让你难受,有合适的赔偿也不一定是坏事。

  • 对事不对人,把好赖摊开了给楼主讲明白,剩下怎么做就看楼主自己的想法了

  • 没用过

  • 已经淘汰了吧,那个时代还没有很好用的 RPC 协议,现在选择很多了

  • 看我的帖子和参考项目:https://ruby-china.org/topics/38214

  • [北京] 2019 10.20 Scala Meetup at 2019年10月13日

    咦?你们不是 Elixir 吗

  • 昨天有人问 我给一个我自用的 Ubuntu 16.04+ 都可以这样用,当然都要 2020 年了,直接 Ubuntu 18.04 最新版把

    升级一下系统到最新版本
    sudo apt update && sudo apt upgrade && sudo apt autoremove
    
    重启一下
    
    装 RVM
    curl -sSL https://rvm.io/mpapis.asc | gpg --import -
    curl -sSL https://rvm.io/pkuczynski.asc | gpg --import -
    curl -sSL https://get.rvm.io | bash -s stable
    
    装 Ruby
    rvm install 2.6.5 && rvm use 2.6.5 --default
    
    装 Rails
    gem install bundler rails pry
    
    如果上一步长期卡住没动静或者你明确知道处在国内访问境外网络不通畅的环境(比如使用国内的云服务商),设置使用 RubyChina 的代理,然后重试上一步(安装 Rails)
    gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
    gem sources -l
    bundle config mirror.https://rubygems.org https://gems.ruby-china.com
    
    装 NodeJS
    curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
    sudo apt-get install -y nodejs
    
    装 Yarn
    curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
    echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/source
    sudo apt-get update && sudo apt-get install yarn
    

    对于 Mac 把 apt 换成 brew 等价的命令就行了

  • 国内也有一些公司,不声张的,但另一方面是,AWS 没有一个专门的 Ruby 开发,写 Java 的顺手就把 Ruby 项目写起来了

  • 嗯,还差一个 CDN 支持

  • ActiveStorage 的 CDN 支持(Proxy)还有 永久 URL(公开 URL)还有多存储后端支持,都会在 6.1 实现

    PS:实现者是个在 Shopify 的华人小哥

    ActionText 我倒是挺赞同他设计的,过去的经验是,如果混入样式在文本中,会导致很难做好多端适配,统一用 class 来标记文本,然后用 css 来调整样式是很好的,当然 trix 似乎没有这个功能。

    现在如果我做 ActionText,我想把文本编辑器和后端解耦,以及用 Quill 这样的可以输出自定义数据结构的编辑器来替换

  • 最逗的是日本那边 Ruby 核心开发至少一半用 Win 的

    其实 Ruby 2.0 后换了新的打包方案, Win 原生 build 都没坑的,问题对于内地这边,安装 Ruby for Win 中间需要的依赖在 AWS 上,全被墙了

  • macOS、Ubuntu 18.04、WSL on Win 10 19H1

    这些系统都可以的

  • @ericguo 前阵子刚搞了

  • 老大 PHP 老二 ASP.net 倒是可以根据 Web Server 的市占侧面印证。

    不过这统计有一点不科学的是,他分析的是网站系统最外层,内部是可以 Go 起来或者别的技术的。

    不过看到 Ruby 排第三,还是说明 Ruby 是很好的后端的 “前端”

  • Ruby 不是没有混乱的地方,看你能不能说出来了