小编and*_*lho的帖子

rails 4 before_validation on :: create或on :: save

我有一个案件正在绕过我的脑袋.

我有一个Image模型,如果上传的话我只想保存.我还需要一些来自上传的信息来验证图像(如高度和宽度).但是我想只有在第一次尝试将文件保存到文件时才会发生上传.

所以我认为最好的选择是拥有一个before_validation,但我希望它只能在保存时运行!

我的代码在这个要点上https://gist.github.com/andreorvalho/b21204977d2b70fdef83

所以奇怪的部分是这个,on: :save并且on: :create有非常奇怪的行为,或者至少不是我的预期.

当我把它作为on: :save我试图做image.save一个测试我可以看到我的before_validation回调没有运行!

如果我on: :create在每种情况下运行都没关系,如果我跑了image.save,image.create或者image.valid?

所以我猜这不是工作,或者我误解了设置的目标.

ps我的创建验证,也发生在每种情况下保存,创建或有效?

让我知道是否有人碰到相同或知道为什么不应该像这样工作.

validation ruby-on-rails ruby-on-rails-4

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

Rails JSON API使用JSON中的PARAMS测试POST请求

这是困扰我一段时间的问题.我正在构建一个API函数,它应该在json中接收数据并在json中接收响应.我的控制器测试运行正常(因为我抽象数据到达那里已经从JSON解码,只需要解释答案).

我也知道该函数运行正常,因为我使用curl测试它与JSON参数,它完美地工作.(例如:curl -i --header"Accept:application/json"--header"Content-Type:application/json"-d'{"test":{"email":"andreo@benjamin.dk"}} ')

但显然我想编写请求(功能)测试来自动测试它,我看到它的方式应该像curl一样工作,即点击我的服务就像是外部调用.这意味着我想在JSON中传递参数并得到答案.我很遗憾,因为所有的例子我都可以看到人们对待已经被解码的论点.

我的问题是:我正在遵循一个错误的前提,希望将参数和请求作为JSON发送,因为我将测试rails的工作原理,因为这是它的责任吗?但我想看看我的代码对错误的参数有多强大,并且想尝试使用JSON.

这种类型的东西:

it "should return an error if there is no correct email" do
    params = {:subscription => {:email => "andre"}}

    post "/magazine_subscriptions", { 'HTTP_ACCEPT' => "application/json", 'Content-Type' => 'application/json', 'RAW_POST_DATA' => params.to_json }
end
Run Code Online (Sandbox Code Playgroud)

你知道这怎么可能吗?如果您认为我测试错了,请告诉我.

祝一切顺利,

安德烈

testing api json rspec ruby-on-rails

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

标签 统计

ruby-on-rails ×2

api ×1

json ×1

rspec ×1

ruby-on-rails-4 ×1

testing ×1

validation ×1