rails - использование: select (отлично) с: has_many: через ассоциацию выдает неверный SQL - PullRequest
4 голосов
/ 19 ноября 2010
User
has_many :posts
has_many :post_tags, :through => :posts

PostTag
belong_to :post
belongs_to :tag
scope :distincttag, :select => ('distinct post_tags.tag_id')

с Rails 3.0.4, я получаю недопустимый SQL: SELECT post_tags. *, Отличный тег_ид ...

по крайней мере еще один человек столкнулся с такой же проблемой: http://www.rubyforum.com/topic/484938

функция или ошибка?

спасибо

1 Ответ

3 голосов
/ 20 ноября 2010

Не похоже на то, что нужно надевать на прицел.

Может быть, вы пытаетесь сделать это:

class PostTag < ...
  belong_to :post
  belongs_to :tag
  def distincttag
    find(:all, :select => 'distinct tag_id')
  end
end

Редактировать: теперь, когда я знаю, что вам нужно:

User
has_many :posts
has_many :post_tags, :through => :posts, :select => 'distinct tags.*'
# or, if you are not worried about database overhead:
has_many :post_tags, :through => :posts, :uniq => true

Ссылка: http://blog.hasmanythrough.com/2006/5/6/through-gets-uniq

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...