Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 获取Rails Activerecord以使用数据库的外部API id_Ruby On Rails_Reactjs_Activerecord_Redux - Fatal编程技术网

Ruby on rails 获取Rails Activerecord以使用数据库的外部API id

Ruby on rails 获取Rails Activerecord以使用数据库的外部API id,ruby-on-rails,reactjs,activerecord,redux,Ruby On Rails,Reactjs,Activerecord,Redux,我让我的项目从我的react前端为“东西”获取api,并将它们置于我的redux状态。当有人想给这些“东西”添加评论时,我在“添加评论”按钮上有一个onclick操作,它将“东西”发布到我的数据库中。这样,我就可以开始与那个东西建立关系(我希望用户能够向它添加评论)。问题是api给了这个东西一个id,当我添加它时,评论想要引用它。另一方面,Active record对api id一无所知,只给它一个普通的主键类型的id,我得到一个错误“找不到id为43565的东西”,因为在我的数据库中它的as

我让我的项目从我的react前端为“东西”获取api,并将它们置于我的redux状态。当有人想给这些“东西”添加评论时,我在“添加评论”按钮上有一个onclick操作,它将“东西”发布到我的数据库中。这样,我就可以开始与那个东西建立关系(我希望用户能够向它添加评论)。问题是api给了这个东西一个id,当我添加它时,评论想要引用它。另一方面,Active record对api id一无所知,只给它一个普通的主键类型的id,我得到一个错误“找不到id为43565的东西”,因为在我的数据库中它的as id为“3”或其他。我已经尝试序列化id属性,使其显示api\u id,但没有帮助。知道我如何解决这个问题吗?

在创建操作中,您可以使用
参数初始化对象。除了(:api_id)
,然后手动分配它

def create
  thing = Thing.new(params.except(:api_id))
  thing.id = params[:api_id]
  thing.save!
end

然后,您可以执行您想要的任何序列化或验证

这很有效!!!非常感谢你。然而,我意识到a)这不是最佳实践,b)我失去了一些方法,比如
Thing.first
和其他ar查询方法,因为它会返回“不真实”的信息。您对此有什么建议吗?您可以保留Rails的id约定,而是创建一个
api\u id
或您想调用它的w/e列。然后,当从React应用程序访问参数时,您可以查找api id,但仍保留默认的db id列。