2017-08-23 16 views
0

私は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 
+0

答えにSachin Rが述べたように、別のFK( 'patient_gender_id')を使うようにRailsに明示する必要があります。もしRailsがデフォルトで 'gender_id'を探すのでなければ – Pavan

答えて

2
@gender = Gender.find(ReferralRequest.last.patient_gender_id) 

又は

class ReferralRequest < ApplicationRecord 
    belongs_to :patient_gender, :class_name => "Gender", :foreign_key => "patient_gender_id" 
end 

@gender = ReferralRequest.last.patient_gender.name 
+0

Thanks Sachin!これは私には意味がある。 – mike9182

0

データベーステーブルにpatient_gender列がないため、ReferralRequest.last.patient_gender.nameを呼び出すことはできません。 ReferralRequest.last.patient_gender_idに電話することができます。

関連する問題