2010-08-09 53 views
2

是否可以使用機械師爲非主動記錄模型創建藍圖?無論我嘗試什麼,似乎都會產生錯誤!非主動記錄模型的機械師

如果這對於機械師來說是不可能的,是否有另一個產生寶石的夾具可以做到這一點?我也讀過Factory Girl對此有疑問。

+0

如果您生成可能會再現問題的最簡單示例,可能會有幫助。另外,「非主動記錄模型」是什麼意思?使用ActiveModel的東西,還是使用普通舊式Ruby對象的東西? – 2010-08-10 00:01:41

+0

我只是指的是一個沒有綁定到ActiveRecord/ActiveModel的模型,但是,你可以真的說我正在尋找一種方法來爲任何常規Ruby類使用Machinist藍圖。我知道我總是可以使用OpenStruct創建我自己的工廠方法來實現這一點,但我真的很喜歡Machinist的語法,如果我能將所有內容都放在Machinist的blueprint.rb文件中,那將會很好。 – joeellis 2010-08-10 04:27:11

回答

4

我做了一些調查Machinist 2測試版1,它看起來像它支持普通的紅寶石對象。以下是我做的工作。樂於學習任何更簡單的解決方案。

require 'rubygems' 
require 'machinist' 
require 'faker' 

class YourObject 
attr_accessor :field1, :field2 
end 


# For all Objects 
class Object 
extend Machinist::Machinable 

def self.blueprint_class 
    Machinist::Blueprint 
end 
end 

# Or just one object 
YourObject.send(:extend, Machinist::Machinable) 
YourObject.class_eval do 
def self.blueprint_class 
    Machinist::Blueprint 
end 
end 



YourObject.blueprint do 
field1 { rand(1000) } 
field2 { Faker::Name } 
end 

obj = YourObject.make 
0

如果有人好奇,FactoryGirl和PORO的其中一個問題(可能還有其他問題)是它不處理帶參數的構造函數。您可以根據回答here進行應付。