【问题标题】:Rails fabricator - how to get value from association field?Rails 制造商 - 如何从关联字段中获取价值?
【发布时间】:2014-11-05 15:47:08
【问题描述】:

假设我有一个模型用户,它有很多笔记。每个注释都有字段 user_name。我希望我的笔记 Fabricator 看起来像这样:

Fabricator(:note, class_name: Note) do
  user
  content Faker::Lorem.paragraph(1)
  user_name user.full_name
end

我正在尝试使用来自已存在的用户的 full_name 方法的值设置 user_name。但我收到以下错误:

undefined method `full_name' for #<Fabrication::Schematic::Attribute:0x0000000a279c50>

任何帮助将不胜感激。

【问题讨论】:

  • 嗯,这是说full_name 方法不存在。我猜user 是一个Fabrication::Schematic::Attribute 对象,也许该方法作为类方法存在但不在实例方法中?
  • full_name 是用户模型中的一个方法......我正在尝试访问用户对象......也许我需要在声明中将它作为参数传递制造商?
  • 当我创建一个新的伪造注释时,我使用的是Fabricate(:lead, user: myuser),其中myuser 是一个用户对象......我预计在Fabricator 声明中user 是一个用户对象......显然不是。
  • user 是在哪里定义的?
  • 好吧,如果您查看link at associations,您会发现这就是您声明关联的方式。

标签: ruby-on-rails ruby-on-rails-4 fabrication-gem


【解决方案1】:

最终在documentation 中发现有一个我可以使用的属性哈希:

Fabricator(:note, class_name: Note) do
  user
  content Faker::Lorem.paragraph(1)
  user_name { |attrs| attrs[:user].full_name }
end

【讨论】:

    猜你喜欢
    • 2013-07-17
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多