0

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

在 rails 中创建模型不是一种选择,因为这些图像是由 fckeditor 上传的,并且只会被写入和链接,而无需进一步的逻辑。

4

2 回答 2

0

有一个前置过滤器,就像before_filter :authenticate_user!你使用devise一样。如果用户未登录,这将重定向到登录页面。图像通过控制器操作提供。

于 2011-01-27T16:14:14.103 回答
0

您可能必须重新考虑您的应用程序是如何设计的,因为没有任何方法(就 n00b 可以看到的而言)在没有图像模型的情况下锁定某些路径。有一个Rails fckeditor (link) gem 可以让你在你的应用程序中将 fckeditor 与 Rails 模型和控制器完全集成。

这就是我要做的。

  1. 在数据库迁移中创建一个“图像”模型和控制器,其中包含最少user_id:integer的字段。protected:boolean, :default => false这将更容易直接链接到某些图像而不是其他图像,并跟踪谁上传了图像。确保belongs_to :user在图像模型中设置关系。
  2. 使用“has_many :images”关系设置您的用户模型,以将用户与他们上传的照片联系起来。
  3. 使用 Authlogic 对用户进行身份验证,并要求某些页面让用户使用 Authlogic 提供的方法登录访问before_filter :current_user
  4. 使用Paperclip实现rails-ckeditor gem以允许用户编辑内容和上传照片。您可以配置 PaperClip 以根据“图像”模型中指定的“受保护”字段将图像保存在“VIP”文件夹或普通文件夹中。
  5. 编辑您的 routes.rb 文件以包含该map.resources :images语句,这将有助于为每张上传的照片创建完整的 URL。

这应该足以让你走上正确的道路。如果您正确实施此操作,您应该能够让用户在 fckeditor 中上传照片,选择他们是否受到保护或没有“VIP”,这应该将照片保存到您指定的文件夹,并且只允许直接链接到非VIP 照片和其他要求用户登录/创建和帐户。祝你好运!

~丹

于 2011-01-28T14:55:44.197 回答