我正在尝试编写一个更新模型并插入关联的变更集.我找不到如何使用的例子put_assoc/4
order = order
|> Proj.Order.changeset(%{state: "error", error_count: order.error_count + 1})
|> Ecto.Changeset.put_assoc(
:order_errors,
[Proj.OrderError.changeset(%Proj.OrderError{}, %{reason: "not_found"})])
|> Proj.Repo.update!
Run Code Online (Sandbox Code Playgroud)
这会打印出以下错误:
** (Ecto.InvalidChangesetError) could not perform update because changeset is invalid.
* Changeset changes
%{order_errors: [%Ecto.Changeset{action: :insert, changes: %{id: nil, inserted_at: nil, order_id: nil, reason: "not_found", updated_at: nil}, constraints: [], errors: [order_id: "can't be blank"], filters: %{}, model: %Proj.OrderError{__meta__: #Ecto.Schema.Metadata<:built>, id: nil, inserted_at: nil, order: #Ecto.Association.NotLoaded<association :order is not loaded>, order_id: nil, reason: nil, updated_at: nil}, optional: [], opts: [], …Run Code Online (Sandbox Code Playgroud) 我们正在开发一个Rails 3项目并使用Capybara/RSpec进行测试.问题是分段和生产环境有所不同.有时候,测试会运行良好,并且在升级时没有问题,但会在生产中中断.
一个例子是我们添加了一个使用Rack :: File发送文件的中间件.应用程序发送标题'X-Sendfile',它在Apache下工作,但Nginx期望'X-Accel-Redirect'.
我正在寻找在我们投入生产时运行一系列测试的最佳方法.有没有人这样做过?理想情况下,测试不应该在生产服务器本身上运行.
测试基本上涵盖了我们产品的核心功能,并且与我们当前运行的测试不同.
非常感谢
在Ruby如何处理内联错误处理程序时,我想了解一些事项
情况1
这是一个常见的用例
def foo
raise Error
end
bar = foo rescue 1
# => 1
bar
# => 1
Run Code Online (Sandbox Code Playgroud)
它按预期工作.表达式foo rescue 1返回1并正确分配给bar.
案例2
Ruby允许对数组进行解析,因此这种行为看起来很奇怪.
baz = 'a'
baz, bar = foo rescue [1, 2]
# => [1, 2]
baz
# => 'a'
bar
# => nil
Run Code Online (Sandbox Code Playgroud)
表达式返回数组[1, 2]但不解构或赋值.它完全完全跳过了作业.
案例3
但是,当您将错误包装在括号中时,解构就会起作用.
baz, bar = (foo rescue [1, 2])
# => [1, 2]
baz
# => 1
bar
# => 2
Run Code Online (Sandbox Code Playgroud)
案例4
加分:提高错误并尝试内联处理它也会跳过分配 …
我上周问过这个问题,但只有8个观点.
我正在处理的应用程序的一部分需要创建大量的用户到用户请求并验证它们是否在应用程序中正确处理.这需要无数小时的QA工作,并且可以使用简单的脚本自动化
users_api = Koala::Facebook::TestUsers.new(config)
users = test_users.create_network(10, true, "email,user_likes,publish_actions")
users.permutations(2) do |u1, u2|
graph = Koala::Facebook::API.new(u1['access_token'])
requests_types.each do |req|
graph # .user_to_user_request(u2, req) Oh noes I can't do this part
end
end
Run Code Online (Sandbox Code Playgroud)
我所看到的一切都表明,即使对于测试用户,也无法在脚本中创建用户到用户的请求.有没有其他(自动)方式来做到这一点?
我想要找到的是一种创建用户到用户请求的方法.质量保证团队仍然需要手动验证.我们面临的问题是他们需要创建90个请求并确保它们不会跳过一个请求,然后验证数据.