• (我不会用,但你得有,逃~

  • 好像只能用在 select 上,Insert Delete Update 调用链最后不是 AR 的 Query 了,没法调 to_sql

  • 这年头有多少个 XXEnv? at 2019年12月26日

    说来 rvm 可以说是 shell 工程的集大成者了。。。印象里好像是上万行的 sh 了这可是非常恐怖的。。。

  • Ruby 2.7.0 Released at 2019年12月26日

    如果重新升级桩文件还有问题,用 bundle exec 来执行命令目前测试是不会出现问题的

    我升级我自己维护的 gem 的时候发现一些别的问题, bundle exec 可以解决

  • Ruby 2.7.0 Released at 2019年12月26日

    Rails 还没有发正式的适配 2.7 版本,虽然不会有什么问题,但是会多一些 warning 看着烦,问题比较大的地方在 bundler 2.1.2,如果遇到问题可以试试重新生成一下 bundle 的桩文件 bundle binstubs bundler

  • 试试能不能打印 pwd 就是当前目录 或者更土的办法,用 Windows 的搜索 去搜你存的那个文件名

  • ruby 做强类型 DSL 的问题 at 2019年12月24日

    两种方法:

    1. 用 Sorbet 加类型标注,未来就是 Ruby 默认集成的组件了
    2. https://github.com/egonSchiele/contracts.ruby 这个有知名项目在用
  • 666

  • GitHub 国内啥时候开始招人呀... 只能靠 GH 加入我软了😂

  • Bootstrap 还没支持 😂 实现良好比较麻烦,等 Bootstrap 5 吧

  • 置顶啦

  • 可以 我也来打广告 https://github.com/rails-engine 😂

  • 哦...那破案了...这个写法 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 项目写起来了