Ich habe 2 Tabellen schools
und private_schools
und sie sind nicht miteinander verwandt. Was ich tun muss, ist die Daten aus beiden Tabellen zu durchsuchen, um die Ergebnisse zu füllen.So erhalten Sie Daten aus 2 Tabellen basierend auf Suchschlüsselwortschienen
Beide Tabellen hat das Attribut name
, von denen ich Ergebnisse erhalten muss. Wenn der Benutzer also ein Schlüsselwort schreibt, werden die Daten in beiden Tabellen gesucht.
Hier ist die Abfrage, die ich versuche, aber es gibt Fehler zurück.
Abfrage:
User.includes(:schools, :private_schools).where("schools.name = ? or
private_schools.name = ?", params[:keyword])
Ich weiß, die User.
Art der Sache ist auch nutzlos und ist auch nicht nötig, aber wie sollten wir dieses Problem bewältigen Keywords aus beiden Tabellen zur gleichen Zeit suchen?
Fehler ist:
Active :: PreparedStatementInvalid (falsche Anzahl von Bind-Variablen (1 für 2) in: schools.name = oder private_schools.name =?):
Per Kommentare der Code Modelle sind:
private School:
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
School:
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
Benutzer:
class User < ActiveRecord::Base
has_one :school
has_one :student
has_one :teacher
accepts_nested_attributes_for :student
accepts_nested_attributes_for :teacher
end
Schreibe den Code dieser drei Modelle –
@ShamsulHaque hinzugefügt Modellcode. – LearningROR
Was möchten Sie von den beiden Tischen bekommen? Sind die Datenausgaben ähnlich? Wenn nicht, benötigen Sie zwei separate Abfragen. Andernfalls können Sie a. Ordne die Ergebnisse in zwei Arrays zu und verbinde sie. So haben Sie eine Reihe von Ergebnissen, keine Sammlung. b. Run raw sql Abfrage –