我在Rails 3.0.3中有一个使用:finder_sql
的模型关系,就像这样(为了便于阅读省略了SQL):
has_many :permissions, :finder_sql => 'SELECT * FROM ...', :readonly => false
列出这些权限只是查找,但当我尝试销毁一个时,我不能。
在Rails控制台中,我可以调用.destroy
并返回该对象。如果我然后调用.destroyed?
,则返回true。但它实际上并没有删除表格行。
如何销毁此关联对象?我在上面添加了:readonly => false
以尝试解决此问题,但尚无运气。
答案 0 :(得分:0)
想出来。 SQL本身就是问题所在。我这样做了:
'Select * FROM `permissions` INNER JOIN ...'
因为我选择了* FROM多个表,每个表都有id
列,所以MySQL返回了最后一个表的id
属性。
解决方案是这样做:
'SELECT `permissions`.* FROM `permissions` INNER JOIN ...'
现在我只从权限表本身获取属性,因此我拥有正确的ID并且删除成功。