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

Beo*_*son 5 ruby-on-rails

说我有两个表,ParentChild和他们两个都称为一个字段name,如果我这样做:

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

我会收到一个错误,说明该领域存在歧义name.我可以做以下事情

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

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

小智 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)
Run Code Online (Sandbox Code Playgroud)

  • 如果您想了解 ActiveRecord 的更多信息,您应该查看 squeel gem https://github.com/ernie/squeel (2认同)