小编Alp*_*pha的帖子

Rail 3.2.2/Devise:rspec的弃用警告

我最近将应用程序升级到rails 3.2.2.

我正在使用Factory_girl

Factory.sequence:name do | n | "名字 - #{n}"结束

Factory.define:用户执行| u | u.first_name {Factory.next(:name)}
u.last_name {| u | 'last_'+ u.first_name}
u.password'secret'u.password_confirmation {| u | u.password} u.sequence(:email){| i | "user_#{i}@example.com"}

结束

而这个简单的测试

指定{Factory.build(:user).should be_valid}

生成以下警告

弃用警告:您正在尝试创建属性user_id'. Writing arbitrary attributes on a model is deprecated. Please just use attr_writer`等(从块中调用(2级)...

我怎么能摆脱它?

rspec ruby-on-rails-3 factory-bot

14
推荐指数
2
解决办法
3842
查看次数

为什么浏览器中的mocha会从URL中检测到全局泄漏而不是从unc路径中检测到?

我正在创建一个javascript库并且想要使用BDD,所以我试试mocha并且我无法使其工作.我希望在客户端上使用该库,所以我假设从可浏览的URL运行它是有意义的,在web连接的上下文中,而不仅仅是来自unc路径的沙箱.

这是虚拟起始点文件test/test.foobar.js

var assert = chai.assert;

var foobar = {
  sayHello: function() {
    return 'Hello World!';
  }
};

describe('Foobar', function() {
  describe('#sayHello()', function() {
      it('should work with assert', function() {
      assert.equal(foobar.sayHello(), 'Hello World!');
    });

  });
});
Run Code Online (Sandbox Code Playgroud)

这是触发测试的html页面,test.html

<html>
<head>
  <meta charset="utf-8">
  <title>Mocha Tests</title>
  <link rel="stylesheet" href="testing/mocha.css" />
  <script src="testing/jquery.js"></script>
  <script src="testing/mocha.js"></script>
  <script>mocha.setup('bdd')</script>
  <script src="testing/chai.js"></script>
  <script src="test/test.foobar.js"></script>
  <script> $(function() { mocha.run(); }) </script>
</head>
<body>
  <div id="mocha"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

当我打开铬或野生动物园

file:///Users/me/dev/sandbox/test.html
Run Code Online (Sandbox Code Playgroud)

它按预期工作,测试通过没有错误

当我打开铬或野生动物园

http://localhost/sandbox/test.html
Run Code Online (Sandbox Code Playgroud)

我收到以下错误,测试失败

Error: global leak detected: script1339700707078
    at …
Run Code Online (Sandbox Code Playgroud)

javascript testing mocha.js

9
推荐指数
2
解决办法
3192
查看次数

rails 3 json自定义json格式

我有一个带有属性id和电子邮件的@clients集合我想呈现这个json格式

 [ 
 {"id":" 1","label":"johndoe@yahoo.com","value":"1"},{"id":"  2","label":"paulsmith@gmail.com.com","value":"2"}
]
Run Code Online (Sandbox Code Playgroud)

在clients_controller中我定义了以下方法

def search
    @clients = Client.where(:user_id => current_user.id).select('id','email')
    render :partial => "clients/search"
  end
Run Code Online (Sandbox Code Playgroud)

这是视图_search.json.erb

[ 
 <%= raw @client.map{|client| '{"id":"' +" #{client.id}" +'","label":"' + "#{client.email}" +  '","value":"' +"#{client.id}" +'"}' }.join(",") %>
]
Run Code Online (Sandbox Code Playgroud)

这是有效的,但我发现它很难...是否有更优雅的方式在视图中生成自定义json格式?

formatting json view ruby-on-rails-3

3
推荐指数
2
解决办法
5899
查看次数

rails 3.0和carrierwave如何防止非图像类型的版本创建

我正在努力尝试实现一些最初对我来说简单的东西.在使用carrierwaverails 3.0应用程序的上下文中.用户必须能够下载除.exe文件之外的任何类型的文档.在Carriewave有白名单

def extension_white_list
    %w(jpg jpeg gif png)
end
Run Code Online (Sandbox Code Playgroud)

我知道有一个黑名单,在我的情况下它会更容易.无论如何,这不是主要关注点.

对于图像文件我在我的上传器类中设置了2个版本.

 version :thumb do
      process :resize_to_fit => [50, 50]  
  end


  version :small do
     process :resize_to_fit => [125, 125]
  end
Run Code Online (Sandbox Code Playgroud)

我不得不承认我对这种语法有点困惑.什么样的ruby代码"版本"定义.我的意思是,它不是一种方法,所以在课堂上是什么?

我试图创建一个方法图像?

def image?
%w(jpg jpeg gif png).include?(filename.extension.to_s)
end
Run Code Online (Sandbox Code Playgroud)

然后从版本代码中调用它以防止在文件不是图像时创建那些版本

version :thumb do
  if image?
    process :resize_to_fit => [50, 50]  
  end
end
Run Code Online (Sandbox Code Playgroud)

但是这段代码会引发错误

undefined method `image?' for #<Class:0x000001017274f8> 
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

谢谢.

file-type ruby-on-rails-3 carrierwave

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

jsonapi 和 active_mode_serializers 如何获取响应中的关系属性?

技术背景:rails 4.2.2,active_model_serializers 0.10.0.rc2 给定一个购物车和一个产品列表,当我将产品添加到购物车时,我希望得到响应:

{
"data": {
  "id": "575",
  "type": "carts",
  "attributes": {
    "name": "cart 1"
  },
  "relationships": {
    "cart_products": {
      "data": [
        {
          "type": "cart_products",
          "id": "32",
          "attributes": {
            "product_id": 456
          }
        }
      ]
    }
  }
}
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,目前的回应是

{
"data": {
"id": "575",
"type": "carts",
"attributes": {
  "name": "cart 1"
},
"relationships": {
  "cart_products": {
    "data": [
      {
        "type": "cart_products",
        "id": "32",

      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

} }

有没有办法渲染关系属性?

ruby-on-rails active-model-serializers json-api

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

rails 3.0.9 resque-scheduler和延迟作业错误undefined方法enqueue_at

rails 3.0.9的上下文,使用resque 1.17.1和resque-scheduler 2.0.0.0d.试图按照https://github.com/bvandenbos/resque-scheduler/tree/v2.0.0.d上的文档,我创建了一个resque_scheduler.rake文件:

# Resque tasks
require 'resque/tasks'
require 'resque_scheduler/tasks'    

namespace :resque do
  task :setup do
    require 'resque'
    require 'resque_scheduler'
    require 'resque/scheduler'      

    # you probably already have this somewhere
    Resque.redis = 'localhost:6379'

    # The schedule doesn't need to be stored in a YAML, it just needs to
    # be a hash.  YAML is usually the easiest.
    #Resque.schedule = YAML.load_file('your_resque_schedule.yml')

    # If your schedule already has +queue+ set for each job, you don't
    # need to require your …
Run Code Online (Sandbox Code Playgroud)

scheduled-tasks resque ruby-on-rails-3

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