I have a User
model and a Question
model.
I want to add a belongs_to :user
association to the Question
model, but I want that association to be called author
. For example, I would call question.author
rather than question.user
.
Obviously this requires two steps:
Surprisingly I haven't found the single, conventional method of doing this in Rails 5 in a different answer.
How do I do this?
rails g migration add_user_to_questions user:references
rails db:migrate
Ideally, you also open the generated migration and change the add_reference
by adding options which you need. Example of more "full" add_reference:
add_references(
:user,
null: false,
index: {name: "custom_index_name_if_needed"},
type: :integer,
foreign_key: {
to_table: "public.my_users_table",
on_delete: :cascade # ensure the row is deleted when user is deleted from DB
}
)
Then in model:
class Question < ApplicationRecord # or ActiveRecord::Base
belongs_to :author, class_name: 'User', foreign_key: :user_id
end