Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.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 如何在不删除记录的情况下解除记录与activerecord关联的关联?_Ruby On Rails_Postgresql_Activerecord - Fatal编程技术网

Ruby on rails 如何在不删除记录的情况下解除记录与activerecord关联的关联?

Ruby on rails 如何在不删除记录的情况下解除记录与activerecord关联的关联?,ruby-on-rails,postgresql,activerecord,Ruby On Rails,Postgresql,Activerecord,如何在不删除记录的情况下解除记录与关联的关联 考虑以下场景,一个游戏有许多规则,而规则有许多游戏 >> game.rules #=> [#<rule id: 1, ...>, #<rule id:2, ...>] 我尝试将更新的数组重新分配给关系,但是这会阻止关联以某种方式保存将来的插入。我认为不能将数组分配给关系 这就是我尝试过的: >> tmp = game.rules.to_a >> tmp.delete(rule_

如何在不删除记录的情况下解除记录与关联的关联

考虑以下场景,一个
游戏
有许多
规则
,而
规则
有许多
游戏

>> game.rules   #=> [#<rule id: 1, ...>,  #<rule id:2, ...>]
我尝试将更新的数组重新分配给关系,但是这会阻止关联以某种方式保存将来的插入。我认为不能将数组分配给关系

这就是我尝试过的:

>> tmp = game.rules.to_a
>> tmp.delete(rule_of_id2)
>> game.rules = tmp
^D
但是,未来的插入不会持续

>> games.rules << new_rule_of_id3
^D

>> game.rules   #=> [#<rule id: 1, ...>
>游戏规则>游戏规则=>[#
它应该返回
#=>[#,#]

如何更新关系而不显式删除
规则

game.rules.delete(Rule.find(2))

在Rails 6.1中,我重写了
\u delete\u row
方法来搜索正确的列。使用delete和destroy

关系。ruby
类目标::关系
匹配测试

类目标::RelationshipTest{Goal::Relationship.count},-1 do
@parent.child_relationships.first.delete
结束
结束
测试“应该破坏关系”吗
assert_difference->{Goal::Relationship.count},-1 do
@parent.child\u relationships.first.destroy
结束
结束
结束
game.rules.delete(Rule.find(2))
game.rule_ids = [1]
game.save