我正在使用ar_fixtures在rails项目中播种数据(该程序是在种子到达2.3.4之前编写的)
一切正常,除了我发现特别是一列没有填充(user_id)。 user_id在yaml文件中设置,例如:
- !ruby/object:Service
attributes:
name: name
updated_at: 2009-10-14 11:50:36
provider_id: "1"
id: "1"
description: ""
user_id: "1"
created_at: 2009-10-14 11:47:01
attributes_cache: {}
但即使运行导入(Service.load_from_file)时存在相关的用户对象,导入后user_id也为nil。其他外键(如上例中的provider_id)正确加载。
我怀疑这是因为user_id在模型中受到保护,并且在批量分配期间会被阻止。
有没有人知道是否是这种情况,如果是的话,如何绕过群发分配保护?当然,我想在运行时为应用程序保留质量分配保护。
答案 0 :(得分:2)
固定!回答我自己的问题..
只需要在加载前调整attr_protected / attr_accessible设置。 e.g。
Service.attr_protected.delete "user_id"
Service.load_from_file
或者,如果限制是基于attr_accessible:
Service.attr_accessible :user_id
Service.load_from_file