如何让ar_fixtures加载受保护的属性?

时间:2009-10-23 07:11:21

标签: ruby-on-rails

我正在使用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在模型中受到保护,并且在批量分配期间会被阻止。

有没有人知道是否是这种情况,如果是的话,如何绕过群发分配保护?当然,我想在运行时为应用程序保留质量分配保护。

1 个答案:

答案 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