多个has_many:通过和不同

时间:2017-09-01 20:45:17

标签: ruby-on-rails ruby-on-rails-5

我知道如何使用 - > {distinct}获得多对多关系的独特关系。

在我的情况下,我必须使用has_many关系并且想要使用 - > {distinct}在最后一个:

has_many :group_provider_pivots
has_many :groups, through: :group_provider_pivots, dependent: :destroy
has_many :agencies, -> { distinct }, through: :groups

这给了我一个错误:

PG::InvalidColumnReference: ERROR:  for SELECT DISTINCT, ORDER BY expressions must appear in select list
LINE 1: ...roup_provider_pivots"."provider_id" = $1 ORDER BY LOWER(agen...

在代码中:

<% @agencies.each do |agency| %>

当我删除不同的部分时,一切正常,但我没有得到独特的代理。

1 个答案:

答案 0 :(得分:0)

您可以使用关系验证范围与模型属性的唯一性。例如,如果您的模型中有一个名为name的属性,则可以通过此类验证获得不同的代理商

validates :name, , uniqueness: { scope: :agencies }
通过这样做,您可以确保每个模型实例都有一组独特的代理。