ruby-on-rails – 在rails 3中的工厂女孩??和nested_attributes
发布时间:2020-12-17 02:52:13 所属栏目:百科 来源:网络整理
导读:我有2个模型,一个接受另一个的属性,我试图找到一个聪明的方法来使用Factory girl为两者设置数据. Class Bookinghas_many :booking_itemsaccepts_nested_attributes_for :booking_itemsClass BookingItembelong_to :booking 我的工厂 Factory.define :booking
我有2个模型,一个接受另一个的属性,我试图找到一个聪明的方法来使用Factory girl为两者设置数据.
Class Booking has_many :booking_items accepts_nested_attributes_for :booking_items Class BookingItem belong_to :booking 我的工厂 Factory.define :booking do |f| f.bookdate Date.today+15.days f.association :space f.nights 2 f.currency "EUR" f.booking_item_attributes Factory.build(:booking_item) # doesn't work end Factory.define :booking_item do |f| f.association :room f.bookdate Date.today f.people 2 f.total_price 20 f.association :booking end booking_spec require "spec_helper" describe Booking do before(:each) do @booking = Factory.create(:booking) end it "should be valid" do #needs children to be valid @booking.should be_valid end end 我环顾了rdocs,但似乎无法找到我想要的东西. 解决方法
如果我理解正确,你想要这样做,但使用更简洁的语法:
booking_item = Factory(:booking_item,:people => 4) booking = Factory(:booking,:booking_item => booking_item) 因为你可以像这样快捷方式: def with_assocs factory,assocs_hashes = {},attrs = {} assoc_models = Hash[ assocs_hash.map { |k,v| [k,Factory(k,v)] } ] Factory factory,attrs.merge(assoc_models) end 并使用这样的: @booking = with_assocs :booking,:booking_item => {:people => 3} @booking.should be_valid 在具有类似工厂定义的active_factory plugin中,它看起来像这样: models { booking - booking_item(:people => 3) } booking.should be_valid 不幸的是,我还没有实现与factory_girl的集成.虽然如果你感兴趣任何意见,非常欢迎. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |