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:
-- 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: :destroyAnd 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: :cascadeNow 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
endAnd **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
endAnd 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
endWhenever 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
endI 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/To view this discussion on the web visit https://groups.google.com/d/--
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 .msgid/rubyonrails-talk/ .d53dfd82-135c-4990-b21b- 3d030accbbbc%40googlegroups. com
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.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment