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.

Reply via email to