Ruby on rails 在Rails 5中,在has_和Owns_和Owns关系中显示重复记录的最佳方式是什么
给定以下模型结构Ruby on rails 在Rails 5中,在has_和Owns_和Owns关系中显示重复记录的最佳方式是什么,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,给定以下模型结构 class Project < ApplicationRecord has_many :leads has_and_belonds_to_many :clients end class Lead < ApplicationRecord belongs_to :project end class Client < ApplicationRecord has_and_belongs_to_many :projects end 环境 轨道5
class Project < ApplicationRecord
has_many :leads
has_and_belonds_to_many :clients
end
class Lead < ApplicationRecord
belongs_to :project
end
class Client < ApplicationRecord
has_and_belongs_to_many :projects
end
环境
- 轨道5
- Ruby 2.3.1
- 你可以试试这个
class Client < ApplicationRecord
has_and_belongs_to_many :projects
has_many :leads, through: :projects
def duplicate_leads
duplicate_ids = leads.group(:email).having("count(email) > 1").count.keys
Lead.where(id: duplicate_ids)
end
end
类客户端1”)。count.key
Lead.where(id:重复的\u id)
结束
结束
您可以尝试创建一个从Lead到Project再到Lead的多个关联,在该关联中,您可以使用lambda根据两个记录之间的电子邮件匹配和不匹配的id动态加入。这会将两条记录都标记为重复记录——如果只想标记一条记录,则可以要求其中一条记录的id小于另一条记录的id
一些提示:这里的酷解决方案正好满足您的需要!谢谢@bkunzi01,但这是针对一个表中的多个列,而不是跨多个表。
class Client < ApplicationRecord
has_and_belongs_to_many :projects
has_many :leads, through: :projects
def duplicate_leads
duplicate_ids = leads.group(:email).having("count(email) > 1").count.keys
Lead.where(id: duplicate_ids)
end
end