【发布时间】:2010-06-02 21:42:33
【问题描述】:
我遇到了the problem described here 的变体:
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”场景中也不适用)。
是否有可行的解决方法?
【问题讨论】:
标签: ruby-on-rails