【发布时间】:2017-01-09 11:11:07
【问题描述】:
我有 2 个表 schools 和 private_schools,它们彼此不相关。我需要做的是从两个表中搜索数据以填充结果。
两个表都有属性name,我需要从中获取结果。因此,当用户编写一些关键字时,将从两个表中搜索数据。
这是我正在尝试的查询,但它返回错误。
查询:
User.includes(:schools, :private_schools).where("schools.name = ? or
private_schools.name = ?", params[:keyword])
我知道User. 之类的东西也没有用,也不需要,但是我们应该如何处理这个问题以同时从两个表中搜索关键字?
错误是:
ActiveRecord::PreparedStatementInvalid(绑定变量(1 对 2)的数量错误:schools.name = ? 或 private_schools.name = ?):
每个模型的代码是:
私立学校:
class PrivateSchool < ActiveRecord::Base
belongs_to :teacher
has_many :private_school_specializations, :dependent => :destroy
has_many :private_classes
has_many :invitation_promo_codes
has_many :popular_schools, as: :resource, :dependent => :destroy
end
学校:
class School < ActiveRecord::Base
belongs_to :user
has_many :students
has_many :subjects
has_many :teachers
has_many :departments
has_many :student_ids
has_many :teacher_ids
has_many :class_rooms
has_many :popular_schools, as: :resource, :dependent => :destroy
end
用户:
class User < ActiveRecord::Base
has_one :school
has_one :student
has_one :teacher
accepts_nested_attributes_for :student
accepts_nested_attributes_for :teacher
end
【问题讨论】:
-
贴出这三个模型的代码
-
@ShamsulHaque 添加了模型代码。
-
你想从两张表中得到什么?数据输出是否相似?如果没有,您将需要两个单独的查询。否则,你可以一个。将结果映射到两个数组并加入它们。所以你将有一个结果数组,而不是一个集合。湾。运行原始 sql 查询
-
我想根据输入的搜索短语从两个表中获取学校名称。如何以相同的方法管理 2 个查询?你们这些cmets是对的,而且是有道理的。 :) 否则之后的东西就是我要找的东西。所以运行 2 个查询并将它们作为 1 个结果集加入。我该怎么做?
标签: mysql ruby-on-rails postgresql ruby-on-rails-4 postgresql-9.4