【发布时间】:2016-06-29 03:03:05
【问题描述】:
好的。假设有一个包含多个连接表的用户模型。
用户
has_many :languages
has_many :skills
has_many :languages, through: :user_langauges
has_many :skills, through: :user_skills
如果我用类似的参数命中一个端点
"user"=>
{ "email"=>"test@123.com",
"languages"=>"["French", Spanish]",
"skills"=>"["accounting", "leadership"]"
}
如何搜索符合上述条件的用户?我主要关心的是如何搜索与“语言”和“技能”相关的用户。是不是最好把所有用户都拿下来,比较哪些用户是一样的?比如:
french = French.users
leadership = Leadership.users
french & leadership # => "users that exist in both?"
显然,有更多的逻辑,但我觉得一般的想法是征税和低效的。但我确信 Rails 已经想到了一种更优雅的方式,这就是为什么我需要 Rails 大师的指导:)
编辑:如果重要的话,我有一个 Psql 数据库。
【问题讨论】:
-
如果你这样做可能会奏效:
User.joins(user_skills: :skills, user_languages: :languages).where("conditions")。如果您想使用上述解决方案,您可以这样做:french.where("leadership condition")。 -
@Deep 你不需要将中间表添加到连接中,这是由 has_many 处理的。
标签: ruby-on-rails ruby postgresql ruby-on-rails-4 search