私はReferralRequestとGenderの2つの対応するテーブルを持つ2つのモデルを持っています。 ReferralRequestテーブルでは、patient_gender_idとpreferred_gender_idという名前のジェンダーの整数IDを格納します。 idsは性別のテーブルから来ます。私はReferralRequest.last.patient_gender.nameのようなものを呼び出すことで、referral_requestsテーブルの整数IDではなく、gendersテーブルから文字列を返すことができるようにしたいと考えています。私は間違って何をしていますか?このルーキーはすべての助けを歓迎します。ありがとう!RailsでIDを持つ別のテーブルから名前を取得する
ReferralRequest
class ReferralRequest < ApplicationRecord
belongs_to :user
belongs_to :gender
has_many :referral_request_concerns
has_many :concerns, through: :referral_request_concerns
has_many :referral_request_insurances
has_many :insurances, through: :referral_request_insurances
default_scope -> { order(created_at: :desc) }
validates :user_id, presence: true
validates :content, presence: true, length: { minimum: 20 }
validates :patient_gender_id, presence: true
validates :preferred_gender_id, presence: true
end
性別
class Gender < ApplicationRecord
has_many :referral_requests
end
及び対応テーブル:
create_table "referral_requests", force: :cascade do |t|
t.text "content"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "patient_gender_id"
t.integer "preferred_gender_id"
t.index ["user_id", "created_at"], name: "index_referral_requests_on_user_id_and_created_at"
t.index ["user_id"], name: "index_referral_requests_on_user_id"
end
create_table "genders", force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "name"
end
答えにSachin Rが述べたように、別のFK( 'patient_gender_id')を使うようにRailsに明示する必要があります。もしRailsがデフォルトで 'gender_id'を探すのでなければ – Pavan