How to get FactoryGirl model attributes with has_and_belongs_to_many association?
我正在尝试使用 HABTM 关联
旅行控制器:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class TripsController < ApplicationController def create trip = Trip.new(create_params) if trip.save redirect_to trips_path, notice: 'Trip successfully created.' else redirect_to :back, alert: trip.errors.full_messages.join('').html_safe end end def create_params params.require(:trip).permit(:end_date, :description, country_ids: [], countries: []) end end |
RSpec TripsController 测试:
1 2 3 4 5 6 | describe TripsController do describe 'POST #create' do before { post :create, trip: attributes_for(:trip) } it { is_expected.to redirect_to trips_path } end end |
旅行模式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Trip < ActiveRecord::Base # Associations has_and_belongs_to_many :countries #Validations validate :require_at_least_one_country private def require_at_least_one_country if country_ids.empty? && countries.count == 0 errors.add(:base, 'Please select at least one country') end end end |
旅行工厂:
1 2 3 4 5 6 7 8 9 10 | FactoryGirl.define do factory :trip do description { Faker::Lorem.sentence } end_date { DateTime.now + 1.day } after(:build) do |trip, evaluator| trip.countries << FactoryGirl.create(:country, :with_currencies) end end end |
ruby文件:
1 | factory_girl_rails (4.5.0) |
试过这个:http://makandracards.com/jan0sch/11111-rails-factorygirl-and-has_and_belongs_to_many,但没用。
下面是答案和解释:
1 2 3 4 5 6 7 8 9 10 | FactoryGirl.define do factory :trip do description { Faker::Lorem.sentence } end_date { DateTime.now + 1.day } after(:build) do |trip, evaluator| trip.countries << FactoryGirl.create(:country, :with_currencies) end end end |
1 2 3 4 | { :description=>"Eum alias tenetur odit voluptatibus inventore qui nobis.", :end_date=>Wed, 16 Sep 2015 11:48:28 +0300 } |
.
1 2 3 4 5 6 7 | FactoryGirl.define do factory :trip do description { Faker::Lorem.sentence } end_date { DateTime.now + 1.day } country_ids { [FactoryGirl.create(:country, :with_currencies).id] } end end |
1 2 3 4 5 | { :description=>"Assumenda sapiente pariatur facilis et architecto in.", :end_date=>Wed, 16 Sep 2015 11:45:22 +0300, :country_ids=>[4] } |
检查您是否真的在请求中发送了任何
请用