我有一个具有枚举作为属性的模型。

class ApplicationLetter < ActiveRecord::Base
  belongs_to :user
  belongs_to :event

  validates :user, :event, presence: true

  enum status: {accepted: 1, rejected: 0, pending: 2}

end

以及生成此模型并为枚举设置值的工厂
FactoryGirl.define do
  factory :application_letter do
    motivation "motivation"
    user
    event
    status :accepted
  end
end

在 Controller 测试中,我想通过工厂获得有效的属性
let(:valid_attributes) { FactoryGirl.build(:application_letter).attributes }

并创建具有这些属性的应用程序。
application = ApplicationLetter.create! valid_attributes

但我收到以下错误:



为什么状态被解释为字符串?如果我在工厂中更改状态,则会出现相同的错误,但会显示正确的相应编号。

最佳答案

let(:valid_attributes) { FactoryGirl.build(:application_letter).attributes.merge(status: 'accepted') }

关于ruby-on-rails - Rails 4 : Set enum field through FactoryGirl attributes,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40830247/

10-11 07:35