【发布时间】:2019-10-14 21:27:32
【问题描述】:
我有两个表 User 和 UserToken。用户has_one: token 和用户令牌belongs_to :user。我的印象是这会将 UserToken#User 方法添加到 UserToken 类中。但是,我得到:
'#' 的未定义方法 'user' 与 以下 'UserToken.where(user_id: 1).user
是我没有正确理解关联还是我没有正确设置它?
用户控制器:
def get
user = UserToken.where(user_id: 1).user
render json: user.to_json
end
用户模型:
class User < ApplicationRecord
has_one :user_token
end
用户令牌模型:
class UserToken < ApplicationRecord
belongs_to :user
end
迁移:
def change
create_table :users do |t|
# This id comes from Auth0
t.datetime :date
t.timestamp :updated_at
t.timestamp :created_at
end
create_table :user_tokens do |t|
t.belongs_to :user
# This comes from plaid when a user signs in
t.string :token
t.timestamp :updated_at
t.timestamp :created_at
end
end
架构:
ActiveRecord::Schema.define(version: 2019_09_19_004350) do
create_table "user_tokens", force: :cascade do |t|
t.bigint "user_id"
t.string "token"
t.datetime "updated_at"
t.datetime "created_at"
t.index ["user_id"], name: "index_user_tokens_on_user_id"
end
create_table "users", force: :cascade do |t|
t.datetime "date"
t.datetime "updated_at"
t.datetime "created_at"
end
end
【问题讨论】:
标签: ruby-on-rails ruby activerecord associations