Ruby on Rails Thursday, April 30, 2015

This is really driving me insane. I've something very similar to your sample Here. I've specified table names inside models. But still the error occurs. Would you mind taking a look at it ? Thank you a lot so far for your time.

On Thursday, April 30, 2015 at 3:59:45 PM UTC+3, Chris Lerum wrote:
https://github.com/chrislerum/factory setting table_name seems to be the sweet spot, working now

On Thursday, April 30, 2015 at 8:01:49 AM UTC-4, Chris Lerum wrote:
you could try, in the model, self.table_name = "seven_gallery_photos" etc.

On Thu, Apr 30, 2015 at 4:09 AM, Rafael Adel <rafael...@gmail.com> wrote:
Are you sure about this ? If so, is there a way to make it working without changing table names ?


On Thursday, April 30, 2015 at 3:45:46 AM UTC+3, Chris Lerum wrote:
In short, yes. See this lovely article; notice the conspicuous absence of any talk of changing table names:
http://blog.makandra.com/2014/12/organizing-large-rails-projects-with-namespaces/

On Wednesday, April 29, 2015 at 1:59:04 PM UTC-4, Rafael Adel wrote:
I can see the only difference is that in my case there's namespace in front of the table names and FK. But in yours there's none since it's a normal app.
But is this the cause ?

On Wednesday, April 29, 2015 at 6:53:18 PM UTC+3, Chris Lerum wrote:
https://github.com/chrislerum/factory
I tried whipping up an app with your code, the controller test passes fine for me, see if it works for you and compare.

On Wednesday, April 29, 2015 at 10:32:47 AM UTC-4, Rafael Adel wrote:
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/
...

--
You received this message because you are subscribed to a topic in the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/rubyonrails-talk/roj0zJgpXVs/unsubscribe.
To unsubscribe from this group and all its topics, send an email to rubyonrails-ta...@googlegroups.com.
To post to this group, send email to rubyonra...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/d53dfd82-135c-4990-b21b-3d030accbbbc%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

--
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 rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/5dbcfc10-d039-481e-9729-a74fd45ea6b7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment