是否可以使用機械師爲非主動記錄模型創建藍圖?無論我嘗試什麼,似乎都會產生錯誤!非主動記錄模型的機械師
如果這對於機械師來說是不可能的,是否有另一個產生寶石的夾具可以做到這一點?我也讀過Factory Girl對此有疑問。
是否可以使用機械師爲非主動記錄模型創建藍圖?無論我嘗試什麼,似乎都會產生錯誤!非主動記錄模型的機械師
如果這對於機械師來說是不可能的,是否有另一個產生寶石的夾具可以做到這一點?我也讀過Factory Girl對此有疑問。
我做了一些調查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
如果有人好奇,FactoryGirl和PORO的其中一個問題(可能還有其他問題)是它不處理帶參數的構造函數。您可以根據回答here進行應付。
如果您生成可能會再現問題的最簡單示例,可能會有幫助。另外,「非主動記錄模型」是什麼意思?使用ActiveModel的東西,還是使用普通舊式Ruby對象的東西? – 2010-08-10 00:01:41
我只是指的是一個沒有綁定到ActiveRecord/ActiveModel的模型,但是,你可以真的說我正在尋找一種方法來爲任何常規Ruby類使用Machinist藍圖。我知道我總是可以使用OpenStruct創建我自己的工廠方法來實現這一點,但我真的很喜歡Machinist的語法,如果我能將所有內容都放在Machinist的blueprint.rb文件中,那將會很好。 – joeellis 2010-08-10 04:27:11