【问题标题】:How do I define/set an attribute in a FactoryGirl factory?如何在 FactoryGirl 工厂中定义/设置属性?
【发布时间】:2021-12-16 13:04:21
【问题描述】:

我正在使用 Rails 4.2、Ruby 2.3.8 和 factory girl 4.5.0。我有这个带有别名属性的模型

class User
  include ActiveModel::Model
    …

  alias customer_name full_name
end

我有这个对应的FactoryGirl工厂

FactoryGirl.define do
  factory :user do
    id { rand(83800..83999) }
    …
    full_name “My “name
    customer_name { full_name }
    …

    skip_create
    initialize_with { new(attributes) }
  end
end

我从另一家工厂跑

   user: create(:user)

然后我得到这个错误

 NoMethodError:
   undefined method `customer_name=' for #<User:0x0000000009f0fd58>
   Did you mean?  customer_name

抱怨

initialize_with { new(attributes) }

用户工厂的生产线。在工厂中定义别名属性的正确方法是什么?

【问题讨论】:

  • 我认为问题出在你的模型上。 alias customer_name full_name 可以,但是你还需要定义一个#customer_name= 方法(赋值方法)

标签: ruby-on-rails ruby rspec alias factory


【解决方案1】:

别名只创建读取器方法,但没有写入器方法。

也尝试添加作家

alias :customer_name= :full_name=

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多