如果我有这样的嵌套资源:
resources :users
resources :posts
end
Run Code Online (Sandbox Code Playgroud)
和a user has_many posts,Rails可以根据URL中的父关联开始编号吗?例如,目前,嵌套资源只是获取ID:
@user.posts.find(params[:id])
Run Code Online (Sandbox Code Playgroud)
这正确命名空间的帖子,只允许来自@user...但是,有没有一种方式使其post_id独立?IE我希望每个用户的帖子从1开始,其中:
/users/1/posts/1
/users/2/posts/1
Run Code Online (Sandbox Code Playgroud)
实际上是指两个不同的帖子?
在我的应用程序中,我想创建在“!”下命名的静态页面。(感叹号)。例如:
/!/about
/!/faq
Run Code Online (Sandbox Code Playgroud)
目前,我可以pages在routes.rb文件中使用前缀来实现此功能:
# config/routes.rb
get 'pages(/:action)' => 'pages', :as => :page
Run Code Online (Sandbox Code Playgroud)
这很好用,并生成正确的URL等。但是,如果我替换pages为!,则路由失败:
# config/routes.rb
get '!(/:action)'...
Run Code Online (Sandbox Code Playgroud)
这是的输出rake routes:
pages GET /!(.:format) {:controller=>"pages", :action=>"index"}
page GET /!/:action(.:format) {:controller=>"pages"}
Run Code Online (Sandbox Code Playgroud)
如您所见,Rails正在生成路线。但是,当我尝试在视图中使用任何那些命名的路由时,都会收到路由错误:
No route matches {:controller => "pages", :action => "about"}
Run Code Online (Sandbox Code Playgroud)
具有讽刺意味的是,如果我使用任何其他符号(如@),则这些路由将按预期工作。我为什么不能!在路线中使用感叹号:(。我应该在github上提交问题吗?
PS,如果我手动指定{:controller => :pages, :action => :about}相同错误的路由,它也会失败。
如果直接访问(/!/about)会呈现正确的页面,则PSS路线实际有效。URL助手只是不允许它实际创建链接:(
比方说我有:
ruby_block "foo" do
block do
puts "do something"
end
end
ruby_block "bar" do
block do
puts "do something else"
end
end
Run Code Online (Sandbox Code Playgroud)
我怎么能叫bar从foo块?
我在一个 Google 云项目中有两个存储桶,例如storage-project。一个使用默认加密的存储桶,另一个使用在另一个名为security-project. 我已授予的角色Cloud KMS CryptoKey Encrypter/Decrypter在云存储服务帐户(service-xxxxxxxx@gs-project-accounts.iam.gserviceaccount.com) storage-project。我可以使用拥有这两个项目的 Google 帐户成功将文件上传到此存储桶。这是预期的行为。
现在我有其他用户帐户,谁拥有的角色Viewer,并Storage Object Creator在storage-project,并没有任何权限的security-project。我担心的是,上述用户能够从第二个存储桶上传和下载文件,即使用户没有被授予对上述密钥的加密/解密权限。
根据链接https://cloud.google.com/storage/docs/encryption/customer-managed-keys#service-accounts,使用客户管理的加密密钥进行加密和解密是使用服务帐户完成的。这隐含地意味着Storage Object Creator在 上有角色的任何人都storage-project可以使用该密钥进行加密/解密。
有什么方法可以限制用户的加密/解密权限?更具体地说,该用户应该能够将文件上传到第一个存储桶,而不是第二个存储桶,就像我们使用 AWS KMS + S3 所做的那样。