Your associations, validations, and callbacks emulate foreign keys so there’s no reason to define them in terms of data constraints.
class Foo < ActiveRecord::Base
class Bar < ActiveRecord::Base
has_many :foos, :dependent => :destroy
You can add indexes via a migration.
However, one thing that foreign keys give you is an index on that column. So if you don’t declare them as foreign keys (which I don’t) then you should declare an index on those columns to help with lookups.