Ruby on Rails:在连接表中呈现名称而不是ID

时间:2019-03-04 17:03:55

标签: mysql ruby-on-rails ruby api

我正在创建一个应用程序,用户可以在其中使用ROR后端API和React前端跟踪用药记录。 我有一个名为current_drugs的联接表。这是我的模型文件的代码。

 create_table "current_drugs", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
    t.integer "user_id"
    t.integer "current_drug_id"
    t.date "to"
    t.date "from"
    t.string "memo"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

下面是我的模型文件。
user.rb

has_many :current_drugs
has_many :current_drug, :through => :current_drugs

drug.rb

has_many :currents, :class_name => "CurrentDrug", :foreign_key => "current_drug_id"

current_drug.rb

belongs_to :user
belongs_to :current_drug, :class_name => "Drug"

我的问题是,是否存在一种聪明的方式来渲染json,其中将current_drug_id替换为药物名称。

当前,我正在调用User.current_drug,它返回一系列药物。但我也想表明该药物的最新日期。我能想到的就是CurrentDrug.where(user_id:user.id),它会返回类似的内容。

[
                    {
                        "id": 1,
                        "user_id": 2,
                        "current_drug_id": 22000,
                        "to": "2019-01-01",
                        "from": "2018-12-25",
                        "memo": "Diabetes",
                        "created_at": "2019-03-04T13:09:59.000Z",
                        "updated_at": "2019-03-04T13:09:59.000Z"
                    },
                    {
                        "id": 2,
                        "user_id": 2,
                        "current_drug_id": 11000,
                        "to": "2019-01-01",
                        "from": "2018-12-25",
                        "memo": "Hypertension",
                        "created_at": "2019-03-04T13:10:05.000Z",
                        "updated_at": "2019-03-04T13:10:05.000Z"
                    }
                ]

如何用药物名称替换current_drug_id部分? 我先谢谢你们。

0 个答案:

没有答案