- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试为相对复杂的模型建立工厂。
我有一个Pressroom模型,属于Source,Source有很多Pressroom。创建 Source 时,如果 pressrooms 为空,则会在 after_create 过滤器中创建一个初始 pressroom。每个来源的新闻发布网站必须是唯一的。
class Source
has_many :pressrooms
after_create :create_initial_pressroom! # if pressrooms.empty?
...
end
class Pressroom
belongs_to :source
# source.pressrooms.map(&:site) should have unique elements
validate_on_create :check_unique_site
end
这导致了我的问题:我的 Pressroom.make
失败了,因为它构建了一个没有打印室的源,所以 after_create
回调创建了一个,当Pressroom.make
试图完成,它的站点不是唯一的。我不想在运行 Pressroom.make
我尝试解决此问题是使新闻发布室蓝图中的来源关联引用新闻发布室。类似于 Source.create :pressrooms => [Pressroom.new]
会做的事情。
Pressroom.blueprint do
source { Source.make :pressrooms => [self] }
site { source.site }
end
不幸的是,self
还不是一个 Pressroom。它是 Machinist::Lathe 的一个实例,所以我得到一个 ActiveRecord::AssociationTypeMismatch 异常。
在工厂和机械师方面,我有点新手。我不想更改业务逻辑,我希望能够使用 Pressroom.make
干净地制作打印室,而无需在此过程中制作两个打印室。如果改用工厂女工会有帮助,我对此持开放态度。
如果有任何关于如何解决此问题的想法,我将不胜感激。
最佳答案
谷歌搜索,我在 http://webcrisps.wordpress.com/2009/08/13/stubbing-before_create-callbacks-in-a-machinist-blueprint/ 上找到了一些提示– 在 Source 蓝图中对 Source 的 after_create :create_initial_pressroom!
回调进行 stub – 在此处使用 Machinist 2 和 Mocha:
Pressroom.blueprint do
source { Source.make!(:without_initial_pressroom) }
site { object.source.site }
end
Source.blueprint do
site
end
Source.blueprint(:without_initial_pressroom) do
object.stubs(:create_initial_pressroom!).returns(true)
end
这样,Pressroom.make!
就可以正常工作,Source.make!
就可以正常工作,而且...我想我很高兴。但是我在上面尝试的解决方案中遇到的问题仍然有点困惑(在机械师 1 和 2 中)。
如果有人知道如何使用 object
进行此操作,请告诉我。它会更简洁,此外,我通常不喜欢在 stackoverflow 上接受我自己的答案。
关于ruby-on-rails - 机械师,我如何引用我正在制作的对象并将其传递给关联? (关联类型不匹配),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5422369/
我对我的模型进行了 validates_uniqueness_of 验证: #SwimMeetRelayEvent.rb validates_uniqueness_of :event_number_d
我正在尝试为相对复杂的模型建立工厂。 我有一个Pressroom模型,属于Source,Source有很多Pressroom。创建 Source 时,如果 pressrooms 为空,则会在 afte
我正在与 factory_girl 一起工作,但正在研究机械师 gem。你能告诉我 - 迁移到机械师的利弊是什么?您是否比较过这些库? 最佳答案 Machinist实际上深受 factory_girl
我是一名优秀的程序员,十分优秀!