我是初学者,所以问题的标题可能不太清楚。出于这个原因,我很难找到解决问题的方法。我正在开发一个语言学习应用程序,允许用户与希望学习他们的语言的母语人士联系,即正在学习意大利语和西班牙语的母语为英语的人将能够与想要学习英语的母语意大利语和西班牙语的人交流。
我有一个语言表,其语言名称为字符串和2个连接表:Native和Desired。这些都采用user_id和language_id。
我的模型设置如下:
class User < ActiveRecord::Base
has_many :natives
has_many :native_languages, through: :natives, source: :language
has_many :desireds
has_many :desired_languages, through: :desireds, source: :language
end
class Language < ActiveRecord::Base
has_many :native_speakers, through: :native_languages, source: :natives
has_many :desired_speakers, through: :desired_languages, source: :desireds
end
class Native < ActiveRecord::Base
belongs_to :user
belongs_to :language
end
class Desired < ActiveRecord::Base
belongs_to :user
belongs_to :language
end
我想在User索引上显示匹配的用户,所以我需要帮助查询应该在用户控制器的索引方法中。
这是我在这里发表的第一篇文章,如果我错过了任何重要文章,请告诉我。在此先感谢您的帮助!
答案 0 :(得分:0)
使用子查询。
我想要的母语者
user = User.find(params[:id])
desired_lanuages = user.desired_languages
User.where(id: Native.select(:user_id).where(language: desired_lanuages))
谁想要我
native_language = user.native_languages
User.where(id: Desired.select(:user_id).where(language: native_language))
<强>匹配强>
User.where(id: Native.select(:user_id).where(language: desired_lanuages))
.where(id: Desired.select(:user_id).where(language: native_language))
我不尝试运行代码。但我认为这种代码是可能的