[rspec-users] rspec and shoulda have_indices

slavix mikerin.slava at gmail.com
Sat Sep 3 20:48:46 EDT 2011


Yes. Thank you. I changed the code to list indices one at a time and
it worked.

    it { should have_db_index(:currency_id) }
    it { should have_db_index(:user_id) }



On Sep 3, 5:38 am, Michael Guterl <mgut... at gmail.com> wrote:
> My guess is that it is checking for an compound index on all of those
> fields.  Try specifying them individually and not in an array.
>
>
>
>
>
>
>
>
>
> On Fri, Sep 2, 2011 at 7:07 PM, slavix <mikerin.sl... at gmail.com> wrote:
> > now getting
> > Failure/Error: it { should
> > have_db_index([:user, :currency, :tradable]) }
> >       Expected Balance to have a  index on columns user and currency
> > and tradable ()
>
> > but the indexes are in the db.. (dev and test)
> > Indexes:
> > Action          Keyname                                        Type
> > Unique  Packed  Field   Cardinality     Collation       Null    Comment
> > Edit    Drop    PRIMARY                                 BTREE   Yes     No      id      0
> > A
> > Edit    Drop    index_balances_on_currency_id   BTREE   No      No      currency_id     0       A
> > YES
> > Edit    Drop    index_balances_on_tradable_id   BTREE   No      No      tradable_id     0       A
> > YES
> > Edit    Drop    index_balances_on_user_id               BTREE   No      No      user_id 0       A
> > YES
>
> > my migration has
> > def self.up
> >    create_table :balances do |t|
> >      t.belongs_to :user, :nil => false
> >      t.belongs_to :currency, :nil => false
> >      t.belongs_to :tradable, :nil => false
> >      t.decimal :amount, :precision => 16, :scale => 8, :default =>
> > 0.0
>
> >      t.timestamps
> >    end
> >    add_index :balances, :user_id
> >    add_index :balances, :currency_id
> >    add_index :balances, :tradable_id
> >  end
>
> > On Sep 2, 6:17 am, David Chelimsky <dchelim... at gmail.com> wrote:
> >> On Sep 2, 2011, at 4:12 AM, slavix wrote:
>
> >> > Hello,
> >> > I am developing a rails 3.1 app. My Gemfile has shoulda gems
> >> > Gemfile
> >> > ..
> >> > gem "shoulda"
> >> > gem "shoulda-matchers"
>
> >> You only need shoulda-matchers if you're using rspec.
>
> >> > In a model spec I have
> >> > spec file
> >> >  it { should have_indices([:user, :currency]) }
>
> >> > And I get this error...
>
> >> > NoMethodError:
> >> >       undefined method `has_indices?' for #<Balance:0xf3b860c>
>
> >> When there is no have_xxx method defined, rspec-expectations implements method_missing such that it assumes you want to send the object the has_xxx? predicate. What your experiencing suggests that there is no have_indices method. Looking athttp://rdoc.info/github/thoughtbot/shoulda-matchers/master/Shoulda/Ma..., I see a singular have_db_index matcher, but I don't see a pluralized one, so perhaps this method doesn't exist. If it does, then something is wrong with your configuration, as it is not being made available.
>
> >> HTH,
> >> David
> >> _______________________________________________
> >> rspec-users mailing list
> >> rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users
> > _______________________________________________
> > rspec-users mailing list
> > rspec-us... at rubyforge.org
> >http://rubyforge.org/mailman/listinfo/rspec-users
>
> _______________________________________________
> rspec-users mailing list
> rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users


More information about the rspec-users mailing list