in the controller:
@program = Program.find_by_id(1)
@psc = ProgramSpecificCategory.find_by_id (2)
@program.ProgramSpecificCategories << @psc
fails with
“c:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependencies.rb:100:in
`const_missing’: uninitialized constant Programspecificcategory”
Any idea what I’m missing? (completely newbie)
below are the components, if it helps:
class Program < ActiveRecord::Base
has_and_belongs_to_many :programspecificcategories
end
class ProgramSpecificCategory < ActiveRecord::Base
has_and_belongs_to_many :programs
end
I also have a common table:
create_table :program_specific_categories_programs, :id => false do
|t|
t.column :program_id, :integer, :limit =>11
t.column :programspecificcategory_id, :integer, :limit =>11
has_and_belongs_to_many :program_specific_categories
Mind the under_scores.
Max
seems to help a little, but still an error:
"undefined method `ProgramSpecificCategories’ "
@program.ProgramSpecificCategories
when you say this it means that there is a method by that name
i.e def ProgramSpecificCategories
#…
end
but here thats not the case so what you want to put inside the instance
variables of @program try to fill in those data i.e the columns of the
underlying table
what i think you want to do from the code it seems
More under_scores:
@program.ProgramSpecificCategories << @psc
should be
@program.program_specific_categories << @psc
and in your migration:
t.column :programspecificcategory_id, :integer, :limit =>11
should be
t.column :program_specific_category_id, :integer, :limit =>11
In Rails, the naming convention is that only class names are
upeer/camel cased. Everything else (and I mean everything) is
snake_cased, including table names, column names, methods names and
field names.
Cheers,
Max