schema.rb naming conventions

going by <

, I think that I have my table names in the schema

squared away, but I'm not convinced. For a many-to-many with
ThroughAssociations between tables foo and bar, is the join table
created named foo_bars by convention? If the table name is foo_bars,
then the corresponding model in app/models would be FooBar, is that

If FooBar is created by me, then, going by the comments in schema.rb,
a migration command was the correct way to create the schema.

I'm just not convinced that I'm following convention on this.

C:\code\strawr\db>type schema.rb
# This file is autogenerated. Instead of editing this file, please use
# migrations feature of ActiveRecord to incrementally modify your
database, and
# then regenerate this schema definition.

ActiveRecord::Schema.define(:version => 3) do

  create_table "categories", :force => true do |t|
    t.column "category", :string, :default => "NULL"

  create_table "category_feeds", :force => true do |t|
    t.column "category_id", :integer, :default => 0
    t.column "feed_id", :integer, :default => 0

  create_table "feeds", :force => true do |t|
    t.column "feed", :string, :default => "NULL"





Going by <>, the corresponding model
would CustomerOrder, is that right?



And I've come across this a few different ways:


There are two ways to build a many-to-many relationship.

The first way uses a has_many association with the :through option and a
join model, so there are two stages of associations.

  class Assignment < ActiveRecord::Base
    belongs_to :programmer # foreign key - programmer_id
    belongs_to :project # foreign key - project_id
  class Programmer < ActiveRecord::Base
    has_many :assignments
    has_many :projects, :through => :assignments
  class Project < ActiveRecord::Base
    has_many :assignments
    has_many :programmers, :through => :assignments


In that example, the name for the join model doesn't contain the models
which it joins. I also saw a similar naming scheme in the rails recipe
book, I believe. Aaaargh.


If you want to use has_many/through, then you should try to come up
with a meaningful name for the relationship. If you are connecting
foos to bars, I would only call the relationship table bars_foos if I
were going to use has_and_belongs_to_many.

Even though it's now out of fashion, I see no reason not to use habtm
for relationships with no data. If some data appears later, just
rename the table and add some columns.