A model called Post expects a table POSTS which has a primary key column named id.

class Post < ActiveRecord::Base
end

Customize!

class Post < ActiveRecord::Base
  self.table_name = 'articles'
  self.primary_key = 'n_article_id'
end

Associations

A model belongs_to a parent and has_many children.

Belongs_to

Expects POSTS to have a foreign key author_id and a model Author.

class Post < ActiveRecord::Base
  belongs_to :author
end

Customize!

class Post < ActiveRecord::Base
  belongs_to :author, :foreign_key => 'writer_id' class_name: 'Writer'
end

Has_many

class Post < ActiveRecord::Base
  has_many :comments
end

Same idea for customization

class Post
  has_many :comments, foreign_key: 'remark_id', class_name: 'Remark'
end

Custom conditions

class Department
  has_many :employees
  has_many :developers,
            foreign_key: 'employee_id',
            class_name: 'Employee',
            conditions: {role: 'Developer'}
end

Has_one

has_one is used when the other model has the foreign key.

class Employee < ActiveRecord::Base
  has_one :office
end

belongs_to is used when this model has the foreign key.