2011-01-27 51 views
0

我有一个Ruby on Rails(2.2.2)应用程序,用户可以在其上面上传图像并将其标记为“锁定”。这会将它们放在另一个文件夹中,而不是标记它。正常的上传文件夹是/ uploads/Image,锁定的文件夹是/ uploads/vip/Image。我只想锁定VIP文件夹,以便您不能将链接发送给某人并在不登录的情况下查看它。我想逻辑将不得不被重定向到应用程序,而不是盲目地提供图像。问题是如何?如何仅允许登录用户查看图像

在rails中创建模型并不是一种选择,因为这些图像是由fckeditor上传的,并且不需要进一步的逻辑即可完成写入和链接。

回答

0

有一个之前的过滤器,如before_filter :authenticate_user!如果您使用devise。如果用户未登录,则会重定向到登录页面。图像通过控制器操作提供。

+0

我正在使用authlogic,但同样的事情会适用我猜。我应该创建什么控制器?与受保护的文件夹名称相同? – miccet 2011-01-27 16:22:17

0

您可能不得不重新考虑您的应用程序是如何设计的,因为没有任何方式(只要此n00b可以看到)锁定某些路径而不在某处存在图像模型。有一个Rails fckeditor(链接)gem,将允许您完全集成fckeditor与Rails模型和控制器在您的应用程序。

这是我会做的。

  1. 在DB迁移最低限度user_id:integerprotected:boolean, :default => false字段创建与“图像”模型和控制器。这样可以更轻松地将链接指向某些图片而不是其他图片,并跟踪谁上传图片。确保在图像模型中设置关系。
  2. 使用“has_many:images”关系设置您的用户模型,以将用户绑定到他们上传的照片。
  3. 使用Authlogic认证用户并要求某些页面使用户使用Authlogic提供的方法before_filter :current_user登录访问。
  4. 执行rails-ckeditor宝石与回形针允许用户编辑内容和上传照片。您可以将PaperClip配置为基于“图像”模型中指定的“受保护”字段将图像保存在“VIP”文件夹或普通文件夹中。
  5. 编辑您的routes.rb文件以包含map.resources :images声明,这将有助于为每张上传的照片创建完整的URL。

这应该足以让您走上正确的道路。如果你正确地实现了这个功能,你应该有能力让用户上传fckeditor中的照片,选择是否受到保护,或者没有“VIP”,它应该将照片保存到指定的文件夹中, VIP照片和其他要求用户登录/创建和帐户。祝你好运!

〜Dan

相关问题