小编and*_*nix的帖子

Carrierwave/Fog/S3"不是公认的存储提供商"

我有一个使用Carrierwave进行文件上传的Rails应用程序.它一直工作正常,但我想开始使用Amazon S3进行图像存储.我收到此错误:

ArgumentError ( is not a recognized storage provider):
  app/controllers/salons_controller.rb:52:in `update'
Run Code Online (Sandbox Code Playgroud)

我已经确定我有Carrierwave和Fog的最新宝石.这是在我的Gemfile中:

gem 'carrierwave'
gem 'aws-sdk'
gem 'fog'
Run Code Online (Sandbox Code Playgroud)

fog.rb看起来像:

CarrierWave.configure do |config|
    config.fog_credentials = {
        :provider              => 'AWS',
        :aws_access_key_id     => 'MYACCESSKEY',
        :aws_secret_access_key => 'MYSECRETKACCESSKEY',
        :region                => 'us-east-1'
    }

    config.fog_directory = 'andrunix'
    config.fog_public    = true
    config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} 
Run Code Online (Sandbox Code Playgroud)

结束

Uploader类看起来像:

class SalonImageUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick
  storage :fog

  def store_dir
    # "andrunix" is the bucket name on S3

    "andrunix/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
end
Run Code Online (Sandbox Code Playgroud)

如果我将存储更改回'file',它可以正常工作.将存储设置为"雾"会生成此错误.

ruby-on-rails amazon-s3 carrierwave

8
推荐指数
1
解决办法
7427
查看次数

Yii CActiveRecord类是否有first()方法?

我需要从Yii CActiveRecord派生类中获取第一条记录.在Rails中,我只能做到这一点:

post = Post.first
Run Code Online (Sandbox Code Playgroud)

我想我可以和Yii做同样的事情:

$post = Post::model()->first();
Run Code Online (Sandbox Code Playgroud)

但是这种方法不存在.我是否必须找到有条件才能获得第一张唱片?

我没有在CActiveRecord的文档中看到first()所以我假设答案是否定的,它没有第一个方法.那么如何才能查询第一条记录呢?

这可行,但肯定是一个丑陋的黑客.当然有更好的方法.

$first = Post::model()->findAll(array('order'=>id, 'limit'=>1));
Run Code Online (Sandbox Code Playgroud)

php yii

4
推荐指数
2
解决办法
8189
查看次数

Rails - 基于对象值的link_to路径

我在索引视图中有一个User对象列表.对于每个用户,我显示一个带有link_to调用的名称,用于编辑用户,如下所示:

<% @users.each do |u| %>
  <%= link_to u.name, edit_user_path(u) %><br/>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我想根据用户的角色属性(例如员工,经理等)使用不同的编辑路径.我在路线上有edit_employee_path,edit_manager_path等等.

动态确定第二个参数的最佳方法是link_to什么?我可以用一堆丑陋的if/else代码破解它,但我想用最惯用的Rails方式来做.

ruby-on-rails

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

标签 统计

ruby-on-rails ×2

amazon-s3 ×1

carrierwave ×1

php ×1

yii ×1