On Wed, Mar 2, 2011 at 9:41 AM, Colin Law <[email protected]> wrote:
> On 2 March 2011 15:08, David Kahn <[email protected]> wrote: > > ... > > Thanks Colin, here are the models and tables. Also to be sure went in to > db > > console and verified the actual table names just in case something went > > awry. Also at bottom are the three rspec/shoulda errors. I have to be > doing > > something wrong but if I am I don't see it. > > > > class XpJurisdictionState < ActiveRecord::Base > > has_many :xp_jurisdiction_taxes > > end > > > > class XpJurisdictionTax < ActiveRecord::Base > > belongs_to :account_subcode > > belongs_to :xp_jurisdiction_states > > that should be :xp_jurisdiction_state. It belongs to one state so > singular. > Thanks (both Colin and Phil), fixed this above (duh). Also added to my inflections: inflect.singular 'taxes', 'tax' So in the console: ruby-1.9.2-p136 :002 > 'taxes'.singularize => "tax" and also plural: ruby-1.9.2-p136 :003 > 'tax'.pluralize => "taxes" *BUT* some piece of code is still deciding that I have 'taxis' and not 'taxes' --- spec still failing: 1) AccountSubcode Failure/Error: it { should have_many(:xp_jurisdiction_taxes) } NameError: uninitialized constant AccountSubcode::XpJurisdictionTaxis # ./spec/models/account_subcode_spec.rb:16:in `block (2 levels) in <top (required)>' 2) XpJurisdictionState Failure/Error: it { should have_many(:xp_jurisdiction_taxes) } NameError: uninitialized constant XpJurisdictionState::XpJurisdictionTaxis # ./spec/models/xp_jurisdiction_state_spec.rb:4:in `block (2 levels) in <top (required)>' So... all the important tests are failing but not my shoulda checks on my model relations. I can just drop these lines in my tests and be ok as other code is essentially checking these via its actions, but is leaving a mystery still open as to why. It seems to me that shoulda is doing something funky in determining what it expects, which on the surface seems strange (I mean, if I say the relation should be :xp_jurisdiction_taxes.... there is nothing to infer... that symbol is the same in the shoulda/rspec and in the class it is testing... Anyhow, if you all have any other input, appreciated. Seems to me next step will be to see if I can trace this through the shoulda source code, although not really in a place timewise right now... > > > end > > > > create_table "xp_jurisdiction_states", :force => true do |t| > > t.string "state_code" > > t.string "state" > > t.string "billing_item" > > t.string "billing_memo" > > t.datetime "created_at" > > t.datetime "updated_at" > > end > > > > create_table "xp_jurisdiction_taxes", :force => true do |t| > > t.integer "xp_jurisdiction_state_id" > > t.integer "account_subcode_id" > > t.decimal "tax" > > t.datetime "created_at" > > t.datetime "updated_at" > > end > > > > public | xp_jurisdiction_states | table | postgres > > public | xp_jurisdiction_states_id_seq | sequence | postgres > > public | xp_jurisdiction_taxes | table | postgres > > public | xp_jurisdiction_taxes_id_seq | sequence | postgres > > > > > > 1) AccountSubcode > > Failure/Error: it { should have_many(:xp_jurisdiction_taxes) } > > NameError: > > uninitialized constant AccountSubcode::XpJurisdictionTaxis > > If you run a console and type > "tax".pluralize you will get "taxes" which is correct. However on > rails 3.0.5 if I type "taxes".singularize I get taxis which is not > what you want. I assume it is using the same rule as would apply for > axis and axes. The solution is to specify your own rules for your > xp_jurisidiction_tax and taxes and then you should be ok. > > > # ./spec/models/account_subcode_spec.rb:16:in `block (2 levels) in > <top > > (required)>' > > > > 2) XpJurisdictionState > > Failure/Error: it { should have_many(:xp_jurisdiction_taxes) } > > NameError: > > uninitialized constant XpJurisdictionState::XpJurisdictionTaxis > > # ./spec/models/xp_jurisdiction_state_spec.rb:4:in `block (2 levels) > in > > <top (required)>' > > > > 3) XpJurisdictionTax > > Failure/Error: it { should belong_to(:xp_jurisdiction_states) } > > Again should be singular, so that explains that problem I think. > > Colin > > > Expected XpJurisdictionTax to have a belongs_to association called > > xp_jurisdiction_states (XpJurisdictionTax does not have a > > xp_jurisdiction_states_id foreign key.) > > > > > > > >> > >> Colin > >> > >> > > >> > > >> > On Tue, Mar 1, 2011 at 5:37 PM, David Kahn <[email protected] > > > >> > wrote: > >> >> > >> >> I have a model 'xp_jurisdiction_taxes' which rails (3) created > >> >> correctly. > >> >> > >> >> Another model 'xp_jurisdiction_states' has many > :xp_jurisdiction_taxes. > >> >> > >> >> In my spec I am using a shoulda helper to test the association but > get > >> >> the > >> >> following error. BTW, greped the whole project just in case and the > >> >> string > >> >> 'taxi' exists nowhere. > >> >> > >> >> 1) XpJurisdictionStates > >> >> Failure/Error: it { should have_many(:xp_jurisdiction_taxes) } > >> >> NameError: > >> >> uninitialized constant > XpJurisdictionState::XpJurisdictionTaxis > >> >> # ./spec/models/xp_jurisdiction_states_spec.rb:4:in `block (2 > >> >> levels) > >> >> in <top (required)>' > >> >> > >> >> Not sure if this is a rails or shoulda issue (I am starting to think > it > >> >> is > >> >> shoulda). Any input? > >> > > >> > -- > >> > You received this message because you are subscribed to the Google > >> > Groups > >> > "Ruby on Rails: Talk" group. > >> > To post to this group, send email to > [email protected]. > >> > To unsubscribe from this group, send email to > >> > [email protected]. > >> > For more options, visit this group at > >> > http://groups.google.com/group/rubyonrails-talk?hl=en. > >> > > >> > >> -- > >> You received this message because you are subscribed to the Google > Groups > >> "Ruby on Rails: Talk" group. > >> To post to this group, send email to [email protected]. > >> To unsubscribe from this group, send email to > >> [email protected]. > >> For more options, visit this group at > >> http://groups.google.com/group/rubyonrails-talk?hl=en. > >> > > > > -- > > You received this message because you are subscribed to the Google Groups > > "Ruby on Rails: Talk" group. > > To post to this group, send email to [email protected]. > > To unsubscribe from this group, send email to > > [email protected]. > > For more options, visit this group at > > http://groups.google.com/group/rubyonrails-talk?hl=en. > > > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

