当我在Hyperstack上使用delete方法更新模型中的has_many关系时,数据库中没有更新关联,仅在前端删除了关联。
我在 rails 5.1.7 上安装了 rails-hyperstack gem 'edge' 分支
在此代码的 Main 组件中,在单击页面中的数字时会调用 Agent#deassign(number)。
我正在尝试在此代码中的 Agent#deassign(number) 方法中使用 delete 方法来删除与问题的关联。
app\hyperstack\components\main.rb
class Main < HyperComponent
before_mount do
@current_agent = Agent.first
end
render(UL) do
@current_agent.issues.pluck(:number).each do |num|
LI do
num.to_s
end
.on(:click) do
@current_agent.deassign(num)
end
end
end
end
app\hyperstack\models\issue.rb
class Issue < ApplicationRecord
belongs_to :agent
end
app\hyperstack\models\agent.rb
class Agent < ApplicationRecord
has_many :issues
def deassign(number)
issue_to_deassign = issues.detect { |issue| issue.number == number }
issues.delete(issue_to_deassign)
end
end
应用\db\schema.rb
...
create_table "agents", force: :cascade do |t|
t.string "email"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
...
create_table "issues", force: :cascade do |t|
t.integer "number"
t.integer "agent_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["agent_id"], name: "index_issues_on_agent_id"
end
问题从前端的agent.issues数组中删除,数字按预期从页面消失。
但是数据库中的关联没有意外更新,当我重新加载页面时,数字重新出现。