Ruby on Rails - has_one in ruby on rails- ruby on rails tutorial - rails guides - rails tutorial - ruby rails
A has_one association sets up a one-to-one connection with another model, but with different semantics. This association indicates that each instance of a model contains or possesses one instance of another model.
Example
Each user in our application has only one account, We'd declare the user model like this:
class User < ApplicationRecord
has_one :account
end
Clicking "Copy Code" button will copy the code into the clipboard - memory. Please paste(Ctrl+V) it in your destination. The code will get pasted. Happy coding from Wikitechy - ruby on rails tutorial - rails guides - ruby rails - rubyonrails - learn ruby on rails - team
In Active Record, when we have a has_one relation, active record assume the only one record exists with the foreign key.
Example
- In accounts table, there can only be one record with a particular user_id.
- If we try to associate one more account for the same user, it makes the previous entry's foreign key as null(making it orphan) and creates a new one automatically.
- It makes the previous entry null even if the save fails for the new entry to maintain consistency.
user = User.first
user.build_account(name: "sample")
user.save [Saves it successfully, and creates an entry in accounts table with user_id 1]
user.build_account(name: "sample1") [automatically makes the previous entry's foreign key null]
user.save [creates the new account with name sample 1 and user_id 1]