FactoryBot工厂创建异常:表字段名"end"引发语法冲突求助
解决FactoryBot中关键字字段"end"的赋值问题
哎,这个坑我之前踩过!Ruby的关键字end刚好和你的字段名撞了,FactoryBot解析的时候直接把它当成代码块的结束标记了,不过有俩简单靠谱的解决办法:
方法一:用字符串键定义属性
把字段名写成字符串形式,Ruby就不会把它识别成关键字了,直接在工厂里这么写:factory :your_model do # 其他属性正常写 "end" { DateTime.now + 7.days } # 这里用字符串"end"作为键 end之后构建实例的时候,也可以用字符串键来传值:
build(:your_model, "end": DateTime.now + 14.days)方法二:用FactoryBot的
add_attribute方法
FactoryBot专门提供了add_attribute方法来处理这种和关键字冲突的属性,写法更规范,可读性也更好:factory :your_model do # 其他属性正常写 add_attribute(:end) { DateTime.now + 7.days } # 也可以用字符串版本:add_attribute("end") { ... }这个方法会明确告诉FactoryBot你要设置的是模型的属性,完全不会和Ruby的关键字混淆。
两种方法都能完美解决问题,选你觉得顺手的就行~
内容的提问来源于stack exchange,提问作者Enrique Franco
相关产品推荐
相关产品推荐

