覆盖FactoryGirl中的属性键

时间:2012-11-07 18:25:54

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

我有一个带有Post属性的模型published_at。 但是,在POST请求API中,要求将其指定为published,而不是published_at。 所以在我的模型中,我重写了setter方法,如此

def published=(value)
  self.published_at = value
end

问题是,在我的API测试中,我使用FactoryGirl的attributes_for(:post)方法为POST请求生成属性,并使用旧的published_at名称。如何在不更改模型中此属性的名称的情况下解决此问题并使用published键而不是published_at生成属性?

2 个答案:

答案 0 :(得分:2)

如何更改:post工厂:

factory :post do
  published { Time.now }
  # published_at
end

或者,如果要分离基于API和Web的帖子,请创建一个新工厂:

factory :api_post, class: Post do
  ...
end

答案 1 :(得分:2)

我自己从未尝试过,但似乎别名可能有效:

alias_attribute :published, :published_at

在这种情况下,我可能会摆脱Post#published=

参考:https://stackoverflow.com/a/4017071/199712