Skip to content

Commit

Permalink
Merge branch 'belongs_to_primary_key_doc' of https://github.com/giris…
Browse files Browse the repository at this point in the history
…hso/rails into girishso-belongs_to_primary_key_doc
  • Loading branch information
Zachary Scott committed Apr 11, 2015
2 parents 77a7c4b + 849715a commit 47dc073
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions guides/source/association_basics.md
Expand Up @@ -829,6 +829,7 @@ The `belongs_to` association supports these options:
* `:counter_cache`
* `:dependent`
* `:foreign_key`
* `:primary_key`
* `:inverse_of`
* `:polymorphic`
* `:touch`
Expand Down Expand Up @@ -913,6 +914,24 @@ end

TIP: In any case, Rails will not create foreign key columns for you. You need to explicitly define them as part of your migrations.

##### `:primary_key`

By convention, Rails assumes that the column used to hold the primary key of it's table is `id`, and `:primary_key` allows you to specify a different column.

Let's say that `users` table has `guid` as the primary key. And the requirement is that `todos` table should hold `guid` column value in the foreign key `user_id`. This can be achieved like this

```ruby
class User < ActiveRecord::Base
self.primay_key = 'guid' # primary key is guid and not id
end

class Todo < ActiveRecord::Base
belongs_to :user, primary_key: 'guid'
end
```

Now if we execute `@user.todos.create` then `@todo` record will have `user_id` value as the `guid` value of `@user`.

##### `:inverse_of`

The `:inverse_of` option specifies the name of the `has_many` or `has_one` association that is the inverse of this association. Does not work in combination with the `:polymorphic` options.
Expand Down

0 comments on commit 47dc073

Please sign in to comment.