Is there have any way can build one-to-many relationship without primary key

I have two models,Book and Picture,one book can have many pictures. In database,I contact them by uuid column which is not a primary key,roughly like this:

Books Pictures

--------------------------------- |-------------1:*(via

uuid)----------|------------------------------------|

id | title | isbn |...|uuid                                        >id>create_at|rating|...|

uuid>

you can use :foreign_key like has_many :pictures, ::foreign_key => "uuid" or if that doesn't work you could use the :finder_sql option and define you own sql to find the related records.

I have two models,Book and Picture,one book can have many pictures. In database,I contact them by uuid column which is not a primary key,roughly like this:

Books Pictures >--------------------------------- |-------------1:*(via uuid)----------|------------------------------------| >id | title | isbn |...|uuid > >id>create_at|rating|...| uuid>

Yes, you can...

I'm doing some work with occupational data right now and everything has an onet_soc_code which is not the primary key. It's not documented, but you can do this (primary_key tells the model to use that column as the local side for looking things up instead of the tables real primary key).

Occupation:    has_many :aliases,             :class_name => 'OccupationAlias',             :primary_key => :onet_soc_code,             :foreign_key => :onet_soc_code,             :order => 'title'

Going the other way requires a patch to Rails, but lets you do this:

OccupationAlias:    belongs_to :occupation,               :primary_key => :onet_soc_code,               :foreign_key => :onet_soc_code

The patch is here:

http://rails.lighthouseapp.com/projects/8994/tickets/765-primary_key-option-for-belongs_to

-philip