Ruby on rails 不可靠行为有很多:期权的逆
例如:Ruby on rails 不可靠行为有很多:期权的逆,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,例如: 有什么问题:的逆\u?我不确定这是否是一个bug,但当你处理关联(如关系)时,的逆\u不起作用: d.traps.where('1=1')[0].dungeon.object_id != d.object_id d.traps.first.dungeon.object_id != d.object_id 虽然当您像使用数组一样使用它时,的逆\u可以正常工作: d.traps.map { |t| t.dungeon.object_id } == [d.object_id] d.traps
有什么问题:
的逆\u?我不确定这是否是一个bug,但当你处理关联(如关系)时,的逆\u不起作用:
d.traps.where('1=1')[0].dungeon.object_id != d.object_id
d.traps.first.dungeon.object_id != d.object_id
虽然当您像使用数组一样使用它时,
的逆\u可以正常工作:
d.traps.map { |t| t.dungeon.object_id } == [d.object_id]
d.traps[0].dungeon.object_id == d.object_id
创建对象时,它会正常工作:
d.traps.build.dungeon.object_id == object_id
它不适用于具有多个(并且在文档中的某个地方指定):
因此,为了避免因
[0]
而不是先使用
some\u scope
替换您的select(&:some\u predicate?
),您的代码将不再工作)所属的和在关联的另一端有多个,请不要使用的反向
d.traps.map { |t| t.dungeon.object_id } == [d.object_id]
d.traps[0].dungeon.object_id == d.object_id
d.traps.build.dungeon.object_id == object_id
t.dungeon.tasks[0].object_id != t.object_id