I'm trying to create a `photo` factory that's in a many to one association 
with `gallery`. And I'm getting two errors, depending on how I specify the 
association between those two models.

Here's the models:

*Photo*

belongs_to :gallery, class_name: "SevenGallery::Gallery"

*Gallery*
 
has_many :photos, class_name: "SevenGallery::Photo", foreign_key: 
"seven_gallery_gallery_id", dependent: :destroy



And the migrations

    
create_table :seven_gallery_galleries do |t|
     t.string :title  
       t.timestamps null: false
    end
    
    create_table :seven_gallery_photos do |t|
       t.string :caption
       t.string :image
       t.references :seven_gallery_gallery, index: true
       t.timestamps null: false
     end


     add_foreign_key :seven_gallery_photos, :seven_gallery_galleries, 
on_delete: :cascade



Now Here's my factories:
**Gallery**: 

    
FactoryGirl.define do
      factory :gallery, class: 'SevenGallery::Gallery' do
        title "an event gallery"
        factory :gallery_with_photos do 
       after(:build) do |gallery| 
        gallery.photos << FactoryGirl.create(:photo_one, 
seven_gallery_gallery_id: gallery)
        gallery.photos << FactoryGirl.create(:photo_two, 
seven_gallery_gallery_id: gallery)
        gallery.photos << FactoryGirl.create(:photo_three, 
seven_gallery_gallery_id: gallery)
       end
        end
      end
    end


And **Photo**:

    
FactoryGirl.define do
      factory :photo, class: "SevenGallery::Photo" do
         
     factory :photo_one do
     end
    
     factory :photo_two do
     end
    
     factory :photo_three do
     end
    
     factory :photo_with_gallery do
      gallery 
     end
      end
    end



And here's the controller spec that generates the error:

   
 it "changes is_main to true in self and false in rest" do
     photo_one = FactoryGirl.create(:photo_with_gallery)
     expect(photo_one.gallery).to be_a SevenGallery::Gallery
 end


Whenever I run the test I get this error:

    
Failure/Error: photo_one = FactoryGirl.create(:photo_with_gallery)
      ActiveModel::MissingAttributeError:
        can't write unknown attribute `gallery_id`
      # ./spec/controllers/seven_gallery/photos_controller_spec.rb:

When I change  the association part to be:

    
factory :photo_with_gallery do
      association :gallery, factory: gallery 
    end

I get this error:

   
 Failure/Error: photo_one = FactoryGirl.create(:photo_with_gallery)
      NoMethodError:
         undefined method `name' for :photo_with_gallery:Symbol 
       # ./spec/controllers/seven_gallery/photos_controller_spec.rb:8


**Backtrace**:

   
 # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/attribute.rb:138:in
 
`with_value_from_database'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/attribute_set.rb:39:in
 
`write_from_user'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/attribute_methods/write.rb:74:in
 
`write_attribute_with_type_cast'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/attribute_methods/write.rb:56:in
 
`write_attribute'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/attribute_methods/dirty.rb:96:in
 
`write_attribute'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/attribute_methods.rb:373:in
 
`[]='
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/associations/belongs_to_association.rb:83:in
 
`replace_keys'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/associations/belongs_to_association.rb:14:in
 
`replace'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/associations/singular_association.rb:17:in
 
`writer'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/associations/builder/association.rb:123:in
 
`gallery='
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/factory_girl-4.5.0/lib/factory_girl/attribute_assigner.rb:16:in
 
`public_send'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/factory_girl-4.5.0/lib/factory_girl/attribute_assigner.rb:16:in
 
`block (2 levels) in object'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/factory_girl-4.5.0/lib/factory_girl/attribute_assigner.rb:15:in
 
`each'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/factory_girl-4.5.0/lib/factory_girl/attribute_assigner.rb:15:in
 
`block in object'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/factory_girl-4.5.0/lib/factory_girl/attribute_assigner.rb:14:in
 
`tap'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/factory_girl-4.5.0/lib/factory_girl/attribute_assigner.rb:14:in
 
`object'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/factory_girl-4.5.0/lib/factory_girl/evaluation.rb:12:in
 
`object'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/factory_girl-4.5.0/lib/factory_girl/strategy/create.rb:9:in
 
`result'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/factory_girl-4.5.0/lib/factory_girl/factory.rb:42:in
 
`run'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/factory_girl-4.5.0/lib/factory_girl/factory_runner.rb:23:in
 
`block in run'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/activesupport-4.2.1/lib/active_support/notifications.rb:166:in
 
`instrument'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/factory_girl-4.5.0/lib/factory_girl/factory_runner.rb:22:in
 
`run'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/factory_girl-4.5.0/lib/factory_girl/strategy_syntax_method_registrar.rb:20:in
 
`block in define_singular_strategy_method'
         # ./spec/controllers/seven_gallery/photos_controller_spec.rb:8:in 
`block (3 levels) in <module:SevenGallery>'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example.rb:177:in
 
`instance_exec'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example.rb:177:in
 
`block in run'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example.rb:385:in
 
`block in with_around_and_singleton_context_hooks'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example.rb:343:in
 
`block in with_around_example_hooks'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/hooks.rb:474:in
 
`block in run'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/hooks.rb:614:in
 
`block in run_around_example_hooks_for'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example.rb:247:in
 
`call'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example.rb:247:in
 
`call'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-rails-3.2.1/lib/rspec/rails/example/controller_example_group.rb:179:in
 
`block (2 levels) in <module:ControllerExampleGroup>'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example.rb:333:in
 
`instance_exec'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example.rb:333:in
 
`instance_exec'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/hooks.rb:387:in
 
`execute_with'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/hooks.rb:616:in
 
`block (2 levels) in run_around_example_hooks_for'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example.rb:247:in
 
`call'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example.rb:247:in
 
`call'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-rails-3.2.1/lib/rspec/rails/adapters.rb:113:in
 
`block (2 levels) in <module:MinitestLifecycleAdapter>'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example.rb:333:in
 
`instance_exec'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example.rb:333:in
 
`instance_exec'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/hooks.rb:387:in
 
`execute_with'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/hooks.rb:616:in
 
`block (2 levels) in run_around_example_hooks_for'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example.rb:247:in
 
`call'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example.rb:247:in
 
`call'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/hooks.rb:617:in
 
`run_around_example_hooks_for'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/hooks.rb:474:in
 
`run'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example.rb:343:in
 
`with_around_example_hooks'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example.rb:385:in
 
`with_around_and_singleton_context_hooks'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example.rb:174:in
 
`run'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example_group.rb:549:in
 
`block in run_examples'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example_group.rb:545:in
 
`map'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example_group.rb:545:in
 
`run_examples'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example_group.rb:512:in
 
`run'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example_group.rb:513:in
 
`block in run'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example_group.rb:513:in
 
`map'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/example_group.rb:513:in
 
`run'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/runner.rb:110:in
 
`block (3 levels) in run_specs'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/runner.rb:110:in
 
`map'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/runner.rb:110:in
 
`block (2 levels) in run_specs'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/configuration.rb:1526:in
 
`with_suite_hooks'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/runner.rb:109:in
 
`block in run_specs'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/reporter.rb:62:in
 
`report'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/runner.rb:108:in
 
`run_specs'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/runner.rb:86:in
 
`run'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/runner.rb:70:in
 
`run'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/lib/rspec/core/runner.rb:38:in
 
`invoke'
         # 
/home/rafael/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-core-3.2.3/exe/rspec:4:in
 
`<top (required)>'
         # /home/rafael/.rbenv/versions/2.2.0/bin/rspec:23:in `load'
         # /home/rafael/.rbenv/versions/2.2.0/bin/rspec:23:in `<main>'

Any help would ne appreciated. Thanks.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/ef9a0c4b-7473-4562-aa33-f1f15e8f78b8%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to