【问题标题】:use rails fixture object in another fixture file在另一个夹具文件中使用 rails 夹具对象
【发布时间】:2010-07-07 09:43:43
【问题描述】:

我想在另一个夹具文件中实例化的夹具文件中使用一个对象。 类似于以下内容(不起作用):

monitor_france:
  objecttype_id: 2
  name1: i-france-1
  name2: <%= monitors(:big_brother).name %>

如果你想知道为什么我会尝试这样奇怪的事情:我正在处理一个遗留数据库......

【问题讨论】:

    标签: ruby-on-rails fixtures


    【解决方案1】:

    这是查询数据库的方式:

    <%= User.find(ActiveRecord::FixtureSet.identify('john')).email %>
    

    Documentation to FixtureSet

    【讨论】:

    • 请注意,这依赖于夹具用户夹具在此夹具之前加载。不幸的是,没有指定夹具加载顺序的官方方法。您可以在不加载的情况下确定 ID,因为它基于哈希,因此很容易设置标准 ActiveRecord 关联,但使用 ActiveRecord 获取项目依赖于数据库中已经存在的对象。
    【解决方案2】:

    试试:

    name2: <%= Fixtures.identify(:big_brother).name %>
    

    或者当你调用模型中已经存在的关联时,你可以这样做

    model1.rb

    has_one :name2
    

    然后在夹具中你就可以做到

    name2: big_brother
    

    查看灯具类: http://ar.rubyonrails.org/classes/Fixtures.html

    希望对你有帮助!

    【讨论】:

    • --> 那行不通。 identify() 返回一个整数(对象的 id,而不是对象本身)。
    猜你喜欢
    • 1970-01-01
    • 2019-07-17
    • 2011-03-16
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 2018-01-30
    • 2020-06-04
    相关资源
    最近更新 更多