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 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/d53dfd82-135c-4990-b21b-3d030accbbbc%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

