【问题标题】:How to get ar_fixtures to load protected attributes?如何让 ar_fixtures 加载受保护的属性?
【发布时间】:2009-10-23 07:11:20
【问题描述】:

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

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

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    已修复!回答我自己的问题..

    只需在加载前调整 attr_protected / attr_accessible 设置。例如

    Service.attr_protected.delete "user_id"
    Service.load_from_file
    

    或者如果限制是基于attr_accessible:

    Service.attr_accessible :user_id
    Service.load_from_file
    

    【讨论】:

      猜你喜欢
      • 2011-03-11
      • 2020-03-31
      • 2011-06-06
      • 2016-02-19
      • 1970-01-01
      • 2012-10-13
      • 2013-04-08
      • 2023-03-03
      • 1970-01-01
      相关资源
      最近更新 更多