Rails:破坏finder_sql关联

时间:2011-01-07 14:53:07

标签: ruby-on-rails ruby-on-rails-3

我在Rails 3.0.3中有一个使用:finder_sql的模型关系,就像这样(为了便于阅读省略了SQL):

has_many :permissions, :finder_sql => 'SELECT * FROM ...', :readonly => false

列出这些权限只是查找,但当我尝试销毁一个时,我不能。

在Rails控制台中,我可以调用.destroy并返回该对象。如果我然后调用.destroyed?,则返回true。但它实际上并没有删除表格行。

如何销毁此关联对象?我在上面添加了:readonly => false以尝试解决此问题,但尚无运气。

1 个答案:

答案 0 :(得分:0)

想出来。 SQL本身就是问题所在。我这样做了:

'Select * FROM `permissions` INNER JOIN ...'

因为我选择了* FROM多个表,每个表都有id列,所以MySQL返回了最后一个表的id属性。

解决方案是这样做:

'SELECT `permissions`.* FROM `permissions` INNER JOIN ...'

现在我只从权限表本身获取属性,因此我拥有正确的ID并且删除成功。