小编set*_*rgo的帖子

Rails嵌套关联并重新启动编号

如果我有这样的嵌套资源:

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)

实际上是指两个不同的帖子?

ruby-on-rails ruby-on-rails-3

2
推荐指数
1
解决办法
248
查看次数

使用Rails!路线中的(感叹号)

在我的应用程序中,我想创建在“!”下命名的静态页面。(感叹号)。例如:

/!/about
/!/faq
Run Code Online (Sandbox Code Playgroud)

目前,我可以pagesroutes.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助手只是不允许它实际创建链接:(

routes ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

2
推荐指数
1
解决办法
571
查看次数

有没有办法从另一个ruby_block调用一个ruby_block?

比方说我有:

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)

我怎么能叫barfoo块?

chef-infra

0
推荐指数
1
解决办法
1081
查看次数

使用 CMEK 和 Cloud Storage 限制 Cloud KMS 密钥的加密/解密权限

我在一个 Google 云项目中有两个存储桶,例如storage-project。一个使用默认加密的存储桶,另一个使用在另一个名为security-project. 我已授予的角色Cloud KMS CryptoKey Encrypter/Decrypter在云存储服务帐户(service-xxxxxxxx@gs-project-accounts.iam.gserviceaccount.com) storage-project。我可以使用拥有这两个项目的 Google 帐户成功将文件上传到此存储桶。这是预期的行为。

现在我有其他用户帐户,谁拥有的角色Viewer,并Storage Object Creatorstorage-project,并没有任何权限security-project。我担心的是,上述用户能够从第二个存储桶上传和下载文件,即使用户没有被授予对上述密钥的加密/解密权限。

根据链接https://cloud.google.com/storage/docs/encryption/customer-managed-keys#service-accounts使用客户管理的加密密钥进行加密和解密是使用服务帐户完成的。这隐含地意味着Storage Object Creator在 上有角色的任何人都storage-project可以使用该密钥进行加密/解密。

有什么方法可以限制用户的加密/解密权限?更具体地说,该用户应该能够将文件上传到第一个存储桶,而不是第二个存储桶,就像我们使用 AWS KMS + S3 所做的那样。

google-cloud-storage google-cloud-kms

0
推荐指数
1
解决办法
457
查看次数