小编Zyr*_*ren的帖子

Rails获取验证失败错误,但ActiveRecord错误模型中没有错误

使用save!保存模型时,我遇到验证错误的问题.ActiveRecord错误模型错误消息是空白的,所以我不知道在验证尝试中发生了什么错误.当我根据文档尝试errors.full_messages或errors.each_full时,它应该显示错误,而不是错误.

我试图保存的模型是Orders模型(使用Spree的电子商务网站).当订单中的商品被删除时,update_totals!被调用,重新计算总数,然后保存!被调用,它会触发验证错误(这个错误很少发生,但只有当我登录时,我才能找到它的原因).订单模型在其模型中有两个验证:

  validates_numericality_of :item_total
  validates_numericality_of :total
Run Code Online (Sandbox Code Playgroud)

我记录了order.item_total.inspect,order.total.inspect和order.errors.full_messages.inspect并得到了这个:

Wed Jan 25 08:53:08 -0800 2012order item total: #<BigDecimal:15780c60,'0.279E2',8(16)>
Wed Jan 25 08:53:08 -0800 2012order total: #<BigDecimal:152bf410,'0.2448225E2',12(20)>
Wed Jan 25 08:53:08 -0800 2012: ERRORS SAVING ORDER: 
Wed Jan 25 08:53:08 -0800 2012[]
Run Code Online (Sandbox Code Playgroud)

item_total和total以十进制(8,2)存储在mySQL数据库中.最后一行是order.errors.full_messages.inspect,这是一个空数组.验证错误如下所示:

ActiveRecord::RecordInvalid (Validation failed: {{errors}}):
  vendor/extensions/mgx_core/app/models/order.rb:382:in `update_totals!'
  vendor/extensions/mgx_core/app/controllers/line_items_controller.rb:7:in `destroy'
  app/middleware/flash_session_cookie_middleware.rb:19:in `call'
  C:\Users\mgx\My Documents\Aptana Studio 3 Workspace\catalogue-spree\script\server:3
  c:/Ruby187/lib/ruby/gems/1.8/gems/ruby-debug-ide-0.4.16/lib/ruby-debug-ide.rb:112:in `debug_load'
  c:/Ruby187/lib/ruby/gems/1.8/gems/ruby-debug-ide-0.4.16/lib/ruby-debug-ide.rb:112:in `debug_program'
  c:/Ruby187/lib/ruby/gems/1.8/gems/ruby-debug-ide-0.4.16/bin/rdebug-ide:87
  c:/Ruby187/bin/rdebug-ide:19:in `load'
  c:/Ruby187/bin/rdebug-ide:19
Run Code Online (Sandbox Code Playgroud)

我想我的问题是双重的:

1.为什么我的activerecord错误模型没有说出验证错误是什么?

2.我该如何解决这个问题?我的item_total和total是否有效保存为十进制(8,2)?

我使用的是rails 2.3.5和spree 0.10.2

activerecord ruby-on-rails

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

使用ec2创建存储在s3上的图像的缩略图并在完成时与轨道进行通信的优雅方法?

好的,快速总结一下我的设置和我想要完成的事情:

  1. 我有一个运行我的网站的rails 2.3.5服务器.我的网站上有一个flash应用程序,用户可以将图像直接上传到s3.

  2. 上传完成后,会通知rails.

  3. 在图像完成上传到s3并通知rails时,我希望rails将一些帖子发送到位于ec2上的某些内容以创建两个缩略图(110x110和600x600).

  4. 当创建缩略图并将其传送到s3时,我希望ec2上的任何进程都将帖子发送回rails以通知缩略图创建已完成并且在s3上.

完成此任务的最佳方法是什么?我非常简短地看过等工具,但我对使用ec2或类似服务并不熟悉.

谢谢

python amazon-s3 amazon-ec2 node.js aws-lambda

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

rspec/capybara/poltergeist测试在本地传递100%,随机测试在teamcity CI服务器上失败

我有一堆rspec测试,其中大约30个是通过水豚/恶作剧的无头测试.每次我在本地运行测试时,所有100%的测试都通过了.

我最近建立了一个teamcity持续集成服务器,测试结果非常不一致.

我运行了10次测试,没有在测试之间做任何更改.只有1轮通过了100%.其他人有1-2次失败(大多数都不一样),都与无头浏览器测试有关.以下是其中一个失败的示例:

ActionView::Template::Error: Couldn't find Spree::Address with id=1072978592

Stack trace:
./app/models/spree/order_decorator.rb:50:in `initialize_default_address'
./app/models/spree/order_decorator.rb:42:in `initialize_shipment'
./app/views/layouts/core.html.erb:23:in `_8cb98e121af585621c1d08e3ec1f6022'
./app/views/layouts/default.html.erb:14:in `_588b3208edc213a939dffd2ad73f4f26'
Run Code Online (Sandbox Code Playgroud)

这个失败很奇怪,因为我查找了一个查找带ID的地址并返回一个工厂女模特的函数.我在本地没有这个问题.

以下是其中一个测试运行的另一个错误:

Capybara::ExpectationNotMet: expected to find link "10" but there were no matches

Stack trace:
./spec/features/simply_ship_spec.rb:102:in `block (2 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)

同样,当我在本地运行时,这个错误不会发生,当我切换到selenium并观察测试时,链接显然就在那里.

这两个错误(不是全部,而是几个例子)在不同的运行中单独发生,而不对项目进行任何更新.有没有人知道为什么会这样?

rspec-rails 2.14.0 capybara 2.1 poltergeist 1.3.0 rails 3.2.14 ruby​​ 1.9.3 p448

teamcity rspec capybara rspec-rails ruby-on-rails-3

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

formik + 是的并验证子反应组件中的字段

假设我有以下代码:

let addressSchema = yup.object().shape({
  firstname: yup.string().required().max(35),
  lastname: yup.string().required().max(35),
  company: yup.string().max(35),
  address1: yup.string().required().max(35),
  address2: yup.string().max(35),
  city: yup.string().required(),
  stateId: yup.string().required(),
  zipcode: yup.string().required().length(5),
  phone: yup.string().required().matches(phoneRegex, 'Phone number is not valid')
});

let checkoutFormSchema = yup.object().shape({
  email: yup.string().email().required(),
  billAddressAttributes: addressSchema,
  shipAddressAttributes: addressSchema,
});

<Formik
    initialValues={this.buildInitialValues()}
    onSubmit={(values, actions) => {
    }}
    validationSchema={checkoutFormSchema}
>
    {formikProps => (
        <FieldWrapper
            Label={<Label placement="left">Email address</Label>}
            Input={<Field type="email" name="email" component={Input} />}
        />
        <AddressFormFields prefix="billAddressAttributes" />
        <AddressFormFields prefix="shipAddressAttributes" />
        )}
</Formik>
Run Code Online (Sandbox Code Playgroud)

where<AddressForm/>有一堆<Field/>用于地址的 formik组件,例如电子邮件字段的制作方式。

电子邮件字段工作正常,触发所有事件和妥善显示验证错误,但我不能得到任何的formik的<Field/><AddressForm/> …

validation reactjs yup formik

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

无法在Rails控制台中访问模型

好的,所以我已经安装了xampp 1.7.7并设置了我的mysql数据库和一切.我在phpmyadmin中的数据库名为"spree-default-1.1_development",我的database.yml文件如下所示:

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: spree-default-1.1_development
  pool: 5
  username: root
  password:
  socket: /opt/lampp/var/mysql/mysql.sock
Run Code Online (Sandbox Code Playgroud)

当我输入"rails console development"时,似乎可以加载控制台:

adnan@ubuntu:~/Documents/Aptana Studio 3 Workspace/spree-default-1.1$ rails console development
Loading development environment (Rails 3.2.3)
1.9.3-p194 :001 > 
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试访问我的mysql数据库中的任何内容时,我收到一个错误:

1.9.3-p194 :001 > Order
NameError: uninitialized constant Order
    from (irb):1
    from /home/adnan/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/commands/console.rb:47:in `start'
    from /home/adnan/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/commands/console.rb:8:in `start'
    from /home/adnan/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.3/lib/rails/commands.rb:41:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'
Run Code Online (Sandbox Code Playgroud)

我不知道为什么我无法访问mysql数据库中的模型.我的设置在ubuntu 11.04中,使用rails 3.2.3和ruby 1.9.3p194.当我在aptana中加载rails服务器时,我可以使用localhost:3000运行服务器,并且它似乎连接到数据库没问题.

当我使用带有rails 2.3的Windows 7安装程序时,我可以毫无问题地访问模型.输入"Order"会给我这个结果,我期望:

>> Order
=> Order(id: integer, user_id: integer, number: string, item_total: …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails-3

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

调用函数时flex4 1195错误(未获取或设置)

我有一个名为S3Uploader的类,它扩展了Sprite,它有一个私有函数init,看起来像这样:

private function init(signatureUrl:String,  
                              prefixPath:String, 
                              fileSizeLimit:Number,
                                queueSizeLimit:Number,
                              fileTypes:String,
                              fileTypeDescs:String,
                              selectMultipleFiles:Boolean,
                                buttonWidth:Number,
                                buttonHeight:Number,
                                buttonUpUrl:String,
                                buttonDownUrl:String,
                                buttonOverUrl:String
                                ):void { 
//do stuff

}
Run Code Online (Sandbox Code Playgroud)

在我的flex应用程序中,我正在尝试显示sprite并在加载应用程序时调用init函数.到目前为止我的代码是这样的:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
                initialize="init();">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            import S3Uploader;

            function init() {   
                var s3upload:S3Uploader = new S3Uploader();
                s3upload.init('/s3_uploads2.xml', '', 524288000, 100, '*.*', 'All Files', true, 100, 30, '/images/upload-button.png', '/images/upload-button.png', '/images/upload-button.png');
                uploader.addChild(s3upload);
            }
        ]]>
    </fx:Script>
    <s:SpriteVisualElement id="uploader" />
</s:Application>
Run Code Online (Sandbox Code Playgroud)

但是,在我调用s3upload.init的行上,我得到一个1195错误,说"1195:尝试通过静态类型S3Uploader的引用访问不可访问的方法init".

当我查找这个错误时,似乎几乎所有人都试图用set或get来调用函数.但是,我没有这样做,我不知道为什么我得到这个错误.有谁知道我做错了什么?

apache-flex actionscript-3 flex4

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