I have a model called Group. It uses the table ‘covenant_groups’.
When I ran a unit test it complained it couldn’t find the groups table.
So
I renamed the fixture file from “groups.yml” to “covenant_groups.yml”
and
changed the fixtures line in my unit test to “fixtures
:covenant_groups”.
However now I can’t access anything from my fixture, it always complains
it’s null. For example, covenant_groups(:allstars) always returns null
when
it should return a Group object.
Does anyone know why this is happening? Is this a fixtures bug?
You can’t just overwrite table_name in active record. You have to use
set_table_name now. Why? I don’t know. This is something new. I did see
that the example in the documentation shows the set_table_name method.
ModelClass < ActiveRecord::Base
set_table_name “different_table”
end
This will not work:
ModelClass < ActiveRecord::Base
def table_name
“different_table”
end
end
I am confident covenant_groups.yml is valid because it writes into the
database the expected values. My actual application also works
correctly,
it interacts correctly with the Group model which uses the
covenant_groups
table.
I think this must be a fixtures bug. What do you think?
I am confident covenant_groups.yml is valid because it writes into
the database the expected values. My actual application also works
correctly, it interacts correctly with the Group model which uses
the covenant_groups table.
I think this must be a fixtures bug. What do you think?
Sorry; I wasn’t thinking. We can’t look up the class for a custom
table name.
covenant_groups(:some_name) is trying to load an instance of the
CovenantGroup class, which doesn’t exist.
This is expected, since you can’t specify the class for a fixtures
table. It will change after 1.0.
In the meantime, try
CovenantGroup = Group
at the top of your test file.
Then the fixture will map covenant_groups table to ConvenantGroup
class, so covenant_groups(:foo) should work. But, untested
jeremy
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (Darwin)