ruby-on-rails-3 – rails 3 – FactoryGirl创建相关记录
发布时间:2020-12-17 02:37:54 所属栏目:百科 来源:网络整理
导读:我正在尝试创建一些测试数据来填充我的表格,以便我可以在我的网站上测试功能. 有问题的表格是:songs,song_arrangements和song_arrangement_files.以这种方式相关联. Songs: has_many :song_arrangements,:dependent = :destroy has_many :song_arrangement_
我正在尝试创建一些测试数据来填充我的表格,以便我可以在我的网站上测试功能.
有问题的表格是:songs,song_arrangements和song_arrangement_files.以这种方式相关联. Songs: has_many :song_arrangements,:dependent => :destroy has_many :song_arrangement_files,:through => :song_arrangements Song Arrangements: belongs_to :song has_many :song_arrangement_files,:dependent => :destroy Song Arrangement Files: belongs_to :song belongs_to :song_arrangement 我已经能够使用以下代码使用FactoryGirl创建25首歌曲: Code in my spec file: before { FactoryGirl.create_list(:song,25) } Code in the factory: FactoryGirl.define do factory :song do |s| s.sequence(:title) { |n| "Song Title #{n}" } s.sequence(:artist) { |n| "Song Artist #{n}" } end end 关于如何创建与各自的song_arrangement或歌曲记录正确相关的song_arrangements和song_arrangement_files的任何想法? 我猜我可以在我的工厂以某种方式嵌套后使用(:create).我对FactoryGirl很新,而且对Rails来说还是比较新的.任何帮助深表感谢! 解决方法
所以我的另一个答案帮助我做了我需要做的事情;然而,我需要基本上更深层次地进入一个级别的协会,而我正在使用该解决方案.我结束了重新阅读FactoryGirl协会的文档,并提出了适合我所有情况的解决方案.它创建歌曲,song_arrangements和song_arrangement_files.我确定代码不漂亮,但它可以工作,以后可以改进.希望这有助于任何人遇到相同类型的障碍.
FactoryGirl.define do factory :song do |s| s.sequence(:title) { |n| "Song Title #{n}" } s.sequence(:artist) { |n| "Song Artist #{n}" } factory :song_with_song_arrangements do ignore do song_arrangements_count 100 end after(:create) do |song,evaluator| FactoryGirl.create_list(:song_arrangement,evaluator.song_arrangements_count,song: song) end end end factory :song_arrangement do |sa| song sa.sequence(:title) { |n| "Arrangement #{n}" } original_key 'A' bpm 75 sa.sequence(:chart_content) { |n| "This is the chart content for Arrangement #{n}." } chart_mapping 'V1,C,V2,B,C' sa.sequence(:notes) { |n| "These are notes for the Arrangement #{n}." } factory :song_arrangement_with_song_arrangement_files do ignore do song_arrangement_files_count 100 end after(:create) do |song_arrangement,evaluator| FactoryGirl.create_list(:song_arrangement_file,evaluator.song_arrangement_files_count,song_arrangement: song_arrangement) end end end factory :song_arrangement_file do |saf| song_arrangement song saf.sequence(:title) { |n| "Attachment #{n}" } url 'http://www.google.com' saf.sequence(:description) { |n| "This is the description of Attachment #{n}." } end end 用于调用这些工厂的代码: Songs: before(:each) { FactoryGirl.create_list(:song,25) } Song Arrangements: before(:each) { FactoryGirl.create(:song_with_song_arrangements) } Song Arrangement Files: before(:each) { FactoryGirl.create(:song_arrangement_with_song_arrangement_files) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |