首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Reservation.last.card => NoMethodError:#<Reservation:0x0090d440e130>的未定义方法‘`card’,您的意思是?card_id

Reservation.last.card => NoMethodError:#<Reservation:0x0090d440e130>的未定义方法‘`card’,您的意思是?card_id
EN

Stack Overflow用户
提问于 2019-11-19 19:33:20
回答 1查看 25关注 0票数 0

我确信这真的很愚蠢,但我似乎找不到问题所在。

我正在尝试调用Reservation.last.card,但收到错误

代码语言:javascript
复制
Reservation Load (0.3ms)  SELECT  "reservations".* FROM "reservations" ORDER BY "reservations"."id" DESC LIMIT $1  [["LIMIT", 1]]
NoMethodError: undefined method `card' for #<Reservation:0x090d440e130>
Did you mean?  card_id

迁移+模式

代码语言:javascript
复制
class AddCardToReservations < ActiveRecord::Migration[5.2]
  def change
    add_reference :reservations, :card, foreign_key: true
  end
end

create_table "reservations", force: :cascade do |t|
    t.bigint "park_id"
    t.bigint "card_id"
    t.index ["card_id"], name: "index_reservations_on_card_id"
    t.index ["park_id"], name: "index_reservations_on_park_id"
  end

模型

代码语言:javascript
复制
class Reservation < ApplicationRecord
  has_one :card
  belongs_to :park
end

class Card < ApplicationRecord
  belongs_to :park
  has_many :reservations
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-19 20:04:32

Reservation类中的代码行...

代码语言:javascript
复制
has_one :card

暗示card对象有一个不是这样的reservation_id,在reservation对象中的外键是card_id,所以您想要的是...

代码语言:javascript
复制
belongs_to :card
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58933148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档