Rails:使用符号解决组的歧义

时间:2012-09-28 20:17:44

标签: ruby-on-rails

假设我有两个表ParentChild,如果我这样做的话,它们都有一个名为name的字段:

Parent.join(:child).group(:name)

我会收到一条错误消息,指出字段name中存在歧义。我可以做以下

Parent.join(:child).group('parents.name')

要解决它,但我更愿意使用符号,如果可能的话。那么,是吗?

1 个答案:

答案 0 :(得分:1)

您可以重新定义范围以自动添加表名前缀

class Parent < ActiveRecord::Base
  class << self; alias_method :old_group, :group; end
  scope :group, lambda { |g|
    old_group("#{table_name}.#{g}")
  }
end

Parent.join(:child).group(:name)