【问题标题】:factory_girl create vs build and associationsfactory_girl 创建与构建和关联
【发布时间】:2011-07-19 08:30:07
【问题描述】:

我在 factory_girl 的关联方面遇到了一些问题:

Factory.define :account do |f|
  f.sequence(:email) {|n| "john#{n}@example.com" }
  f.password "secret"
  f.confirmed_at 2.days.ago.to_s(:db)
  f.name "John Doe"
  f.seller false
  f.admin false
end

Factory.define :request do |f|
  f.association :account
  f.message 'Test message.'
end

这就是问题所在:

当我执行 a = Factory(:request), a.account => nil 但是当我执行 a = Factory.build(:request) 时,a.account 是正确的。

知道为什么会这样吗?

谢谢

【问题讨论】:

  • 这里没有验证问题?如果在创建后执行 a.errors 怎么办?
  • Request mock 上没有验证错误...它被保存但没有 account_id,这让我想知道 request.account 上是否有验证错误,我可以通过什么方式检查?
  • 我也不确定为什么在创建请求之前 SQL 看起来像这样 "SELECT accounts.* FROM accounts WHERE accounts.email IS NULL LIMIT 1"跨度>

标签: ruby-on-rails rspec rspec2 factory-bot


【解决方案1】:

Factory(:request) 调用默认策略,你是否在某个地方改变了它?

【讨论】:

  • 这不是答案,只是评论
  • factory_girl 让您有机会覆盖用于构建对象的默认策略。无论如何,看看上面的代码,你确定你也没有错过 password_confirmation 字段吗?
  • 我刚刚意识到我在模型中的 before_save 回调中设置了关联...呃...感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 2016-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 1970-01-01
  • 2015-05-30
  • 2013-04-13
相关资源
最近更新 更多