我遇到了这里描述的问题的变体:
ActiveRecord非常不可预测地为关联连接分配表别名.与给定表的第一个关联保留了表名.与该表的关联的进一步连接使用别名,包括路径中的关联名称......但是应用程序开发人员通常不在编码时知道[其他]连接.
在我的情况下,我被has_many和include的有毒混合物所困扰.我的架构中的许多表都有一state列,而has_many想要在该列上指定条件:has_many :foo, :conditions => {:state => 1}.但是,由于状态列出现在许多表中,因此我通过显式指定表名来消除歧义:has_many :foo, :conditions => "this_table.state = 1".
到目前为止,这种方法运行良好,为了提高效率,我想添加一个:include预加载相当深的数据树.这会导致表在不同的代码路径中不一致地出现别名.我对上面引用的票证的解读是这个问题不是也不会在Rails 2.x中修复.但是,我没有看到任何方法来应用建议的解决方法(在查询中明确指定别名表名称).我很高兴在has_many语句中明确指定表别名,但我没有看到任何方法这样做.因此,解决方法似乎不适用于这种情况(我认为,在许多'named_scope'方案中)也没有.
有可行的解决方法吗?
就像是
:conditions => { :this_table => { :state => 1 } }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2402 次 |
| 最近记录: |