炮哥出品,必属精品,这就是我前年的工作流的全新版本啦
苹果 2016 新设计的那个钢板键盘有设计缺陷,所以使用这设计的(就是 2016-2019 的 mbp)键盘保修期延长到四年且免费更换
成为 MiBoy 啊!一百多就够了吧...反正机械键盘几乎都是 Cherry 轴 Cherry G3000 500 左右(傻大笨) Mac 布局的 Matias 也差不多 700 多
消耗品该磨损就磨损吧(毕竟还能顺道换 C 壳和电池),在书桌上用可以买个键盘用
华顺应该没续那个域名 我看看能否拿掉那一条
APM 监控有钱上 NewRelic,没钱自建 ELK
自动化运维机器不多各台机器单独配 Monit 就好,部署 capstrano,老玩具还马马虎虎能用。
机器比较多的话,现代话的做法还是上容器了
(我不会用,但你得有,逃~
好像只能用在 select 上,Insert Delete Update 调用链最后不是 AR 的 Query 了,没法调 to_sql
说来 rvm 可以说是 shell 工程的集大成者了。。。印象里好像是上万行的 sh 了这可是非常恐怖的。。。
如果重新升级桩文件还有问题,用 bundle exec
来执行命令目前测试是不会出现问题的
我升级我自己维护的 gem 的时候发现一些别的问题, bundle exec
可以解决
Rails 还没有发正式的适配 2.7 版本,虽然不会有什么问题,但是会多一些 warning 看着烦,问题比较大的地方在 bundler 2.1.2,如果遇到问题可以试试重新生成一下 bundle 的桩文件 bundle binstubs bundler
试试能不能打印 pwd 就是当前目录 或者更土的办法,用 Windows 的搜索 去搜你存的那个文件名
两种方法:
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 里的任何内容,这个跟请求传入的数据的结构是一样的
支持!
你公司是为了赖掉裁员的赔偿金,可以去仲裁,就算公司进一步耍流氓拒不支付也算埋了个雷。
其实直接裁员也是违规的,不过既然摊牌了,就算依法公司也会变着法让你难受,有合适的赔偿也不一定是坏事。
对事不对人,把好赖摊开了给楼主讲明白,剩下怎么做就看楼主自己的想法了
没用过