2014-11-05 177 views
0

比方说,我有一个模型用户有很多注释。每个笔记都有字段user_name。我想我的笔记加工厂看起来是这样的:Rails制造商 - 如何从关联领域获得价值?

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

我试图做的是设置user_name具有从已经存在的用户FULL_NAME方法的价值。但我收到以下错误:

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

任何帮助,将不胜感激。

+0

以及它说,'full_name'方法不存在。我猜''user'是一个'Fabrication :: Schematic :: Attribute'对象,或许该方法存在为一个类方法,但不存在于实例方法中? – Thermatix 2014-11-05 15:49:59

+0

'full_name'是用户模型中的一个方法...并且我试图访问User对象......也许我需要将它作为构造器声明中的参数传递给它? – 2014-11-05 15:55:02

+0

当我创建一个新的伪造笔记时,我正在使用'Fabricate(:lead,user:myuser)',其中'myuser'是一个User对象...我期望在Fabricator声明中'user'是一个User对象。 。 显然不是。 – 2014-11-05 16:13:05

回答

3

找到了最终的documentation有一个属性散列我可以使用:

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