Rails模型中的用户条件语句

时间:2009-06-20 17:53:22

标签: ruby-on-rails amazon-s3 attachment-fu

我正在使用attachment_fu和Amazon S3存储工作Rails应用程序。是否可以在创建对象时根据用户输入使:s3_访问(has_attachment选项的一部分)成为条件。我希望用户能够选择附件是否经过身份验证 - 读取或公开读取。这是可能的,您将如何设置条件语句?

我的模型看起来像这样:

has_attachment :content_type => :image,
               :storage => :s3,
               :size => 0.kilobytes..6144.kilobytes,
               :processor => 'Rmagick',
               :resize_to => '650x500>',
               :thumbnails => { :thumb => '75x75!' },
               :s3_access => ( [[conditional]] ? 'authenticated-read' : 'public-read' )

显然[[conditional]]是我想要替换的,但我不知道如何根据模型中的用户操作正确设置条件。也许这是这种类型语句的条件错误时间。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

詹姆斯,我以前做过这件事。我正在挖掘我的旧代码,试图找到我可以在这里展示的样本,但我似乎无法找到它。旧客户端,代码可能已经消失等等......

但你走在正确的轨道上。请记住,'has_attachment'只是一个带参数哈希的方法调用,所以如果你这样对待它,你可以调整最终发送给方法的哈希值。

编辑 - 这是一个代码示例 -

production = ENV['RAILS_ENV'] == 'production'

has_attachment :content_type => :image, 
  :max_size => 1.megabyte, 
  :resize_to => '800x600>', 
  :thumbnails => { :thumb => '146x146>', :small => '75x75' }, 

  # skip s3 for local development and testing
  :storage => (production ? :s3 : :file_system),
  :path_prefix => (production ? 'comment_images' : 'public/comment_images')

在上面的例子中,我想在开发时在本地存储上传,但在生产时切换到S3。所以你非常接近你需要的地方......