0

我有一个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在我的模型中更改此属性的名称?

4

2 回答 2

2

:post改变你的工厂怎么样:

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

或者,如果您想将基于 API 的帖子和基于 Web 的帖子分开,请创建一个新工厂:

factory :api_post, class: Post do
  ...
end
于 2012-11-07T18:45:40.590 回答
2

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

alias_attribute :published, :published_at

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

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

于 2012-11-07T18:53:27.103 回答