gpt4 book ai didi

ruby-on-rails - 使用 FactoryGirl 别名属性的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-28 20:46:36 25 4
gpt4 key购买 nike

好吧,我在 factories.rb 中有以下内容

Factory.alias /(.*_)confirmation/, "\1"

Factory.define :user do |f|
f.new_pass 'asdasdasd'
f.new_pass_confirmation 'asdasdasd'
end

然后当我创建用户时,我执行以下操作:

Factory.build(:user, :new_pass => 'something', :new_pass_ => 'something_else')

但它抛出一个错误:

undefined method `new_pass_=` for #<User:0x1234567>

FactoryGirl 不应该将 new_pass_ 转换为 new_pass_confirmation 吗?

最佳答案

factory_girl 中的别名用于防止两个属性相互冲突。典型的例子是关联与外键:如果您的工厂定义了一个“用户”关联并且您通过传递“user_id”覆盖它,则“user_id”应该优先。

如果您希望密码确认覆盖密码,您可以使用此别名:

Factory.alias /(.*)_confirmation/, "\1"

听起来您希望密码确认默认为密码,您可以这样做:

Factory.define :user do |f|
f.new_pass 'asdasdasd'
f.new_pass_confirmation { |u| u.new_pass }
end

在新语法中,您可以省略 block 参数:

FactoryGirl.define do
factory :user do
new_pass 'asdasdasd'
new_pass_confirmation { new_pass }
end
end

关于ruby-on-rails - 使用 FactoryGirl 别名属性的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7198846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com