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.ade...@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-talk+unsubscr...@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/d53dfd82-135c-4990-b21b-3d030accbbbc%40googlegroups.com > <https://groups.google.com/d/msgid/rubyonrails-talk/d53dfd82-135c-4990-b21b-3d030accbbbc%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > 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+unsubscr...@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/CAG4BQ-LfohGbf%3DNmQJWA2QscJ81JLVz62DHN4Kknh5xFQX0-PA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.