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