首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Rails 5API与关联创建/更新资源

通过Rails 5API与关联创建/更新资源
EN

Stack Overflow用户
提问于 2016-05-27 07:06:16
回答 1查看 1.1K关注 0票数 1

我有一个有两个玩家场的匹配模型,它与用户模型有belongs_to关联。

模型

代码语言:javascript
复制
class Match < ApplicationRecord

  belongs_to :player1, :class_name => 'User', :foreign_key => 'player1'
  belongs_to :player2, :class_name => 'User', :foreign_key => 'player2'

end

当通过API创建匹配时(使用Postman请求),我尝试传递播放机的user_id,但是得到了一个TypeMismatch错误,指示控制器期望一个用户对象,但得到一个Fixnum。

看看这一行:

代码语言:javascript
复制
@match = Match.new(match_params)

错误是有意义的,因此我修改了默认的脚手架生成控制器,改为如下所示:

代码语言:javascript
复制
def create
  @match = Match.new
  @match.player1 = User.find(params[:match][:player1])
  @match.player2 = User.find(params[:match][:player2])

  if @match.save
    render json: @match, status: :created, location: @match
  else
    render json: @match.errors, status: :unprocessable_entity
  end
end

# PATCH/PUT /matches/1
def update
  if @match.update( :player1 => User.find(params[:match][:player1]),
                    :player2 => User.find(params[:match][:player2])
                    )

    render json: @match
  else
    render json: @match.errors, status: :unprocessable_entity
  end
end

这是可行的,但解决方案似乎“不雅”。是否有更好的方法将值传递给具有belongs_to关联的控制器?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-27 07:24:14

请您尝试通过数据库迁移将匹配模型中的foreign_key分别从player1, player2更改为player1_id, player2_id。因为您的foreign_key和belongs_to关联是相同的?请让我知道它是否有效!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37476928

复制
相关文章

相似问题

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