Javascript 在Hyperstack上,删除方法不';t update在数据库中有很多关系

Javascript 在Hyperstack上,删除方法不';t update在数据库中有很多关系,javascript,ruby-on-rails,ruby,reactjs,hyperstack,Javascript,Ruby On Rails,Ruby,Reactjs,Hyperstack,当我使用delete方法更新Hyperstack上模型中的has_mu many关系时,数据库中的关联不会更新,并且只在前端删除关联 我已经在rails 5.1.7上安装了rails hyperstack gem“edge”分支 在该代码的主组件中,当单击页面中的号码时,会调用代理#deassign(number) 我试图在此代码中使用Agent#deassign(number)方法中的delete方法来删除与问题的关联 app\hyperstack\components\main.rb cla

当我使用delete方法更新Hyperstack上模型中的has_mu many关系时,数据库中的关联不会更新,并且只在前端删除关联

我已经在rails 5.1.7上安装了rails hyperstack gem“edge”分支

在该代码的主组件中,当单击页面中的号码时,会调用代理#deassign(number)

我试图在此代码中使用Agent#deassign(number)方法中的delete方法来删除与问题的关联

app\hyperstack\components\main.rb

class Main
app\hyperstack\models\issue.rb

类问题
app\hyperstack\models\agent.rb

类代理
app\db\schema.rb

。。。
创建表“代理”,force::cascade do | t|
t、 字符串“email”
t、 datetime“created_at”,null:false
t、 datetime“更新时间”,null:false
结束
...
创建表格“问题”,强制::级联do | t|
t、 整数“数”
t、 整数“agent\u id”
t、 datetime“created_at”,null:false
t、 datetime“更新时间”,null:false
t、 索引[“代理id”],名称:“索引发布代理id”
结束
该问题将从前端的agent.issues数组中删除,并且该数字将按预期从页面中消失


但是数据库中的关联没有意外更新,当我重新加载页面时,该数字会重新出现。

与普通的服务器端ActiveRecord API不同,您需要显式保存已删除的项目

issues.delete(issues_to_deassign).save
为什么?

问题是删除项目意味着将进行数据库保存。

由于浏览器必须与服务器异步,Hyperstack会为更新数据库的任何AR方法(即保存、更新、创建等)返回一个承诺。该承诺将在数据库更新完成时解决。

然而,我们期望
delete
方法返回刚刚删除的对象,因此我们有一个矛盾。

因此有3种设计选择。

1.打破删除的工作方式,保存并返回承诺
2.让delete保存,但不是承诺返回已删除的项目
3.让delete返回项目,并让开发人员显式保存。

选项1和2不太好,因为它们会使删除操作变得不灵活。

选项3虽然打破了ActiveRecord的标准语义,但如果需要(即通过在末尾添加
save
),可以轻松实现这些语义,而不会牺牲灵活性


谢谢,成功了。我在类中添加了“optional:true”,以避免在将对象保存为引用时出现验证错误。属于:代理,可选:true