2017-07-01 4 views
0

Kann die gleiche Frage nicht finden. Wie kann ich select.where for model angeben?Tabelle für Schienen angeben .wo

ich aus verschiedenen Tabellen durch ein Modell zu wählen brauchen und wollen so etwas wie dies in der Steuerung erhalten:

params[:id] = 1248 // here is example of request params 
id=params[:id]  // this id goes to message SQL like table name with prefix: 
Message(id).all => select * from messages_1248 

Wie kann ich so etwas wie dieses zu bekommen?

Danke für die Antworten!

UPD:

Ich habe eine Tabelle mit den Benutzern und vielen Tabellen mit Nachrichten (jede Tabelle für ein Paar von Benutzern). In der Benutzertabelle gibt es die Spalte "Nachrichten" mit den IDs der Nachrichtentabellen. Und innerhalb von user_controller muss ich eine Abfrage wie in meiner Frage ausführen. Vielleicht kann jemand ein Beispiel teilen?

+0

mehr Tabelle auszuwählen zugreifen müssen, hängt es mit Ihren Strukturdaten (zB aktive Datensatz Beziehung Verbindungen), ob es has_many, has_one/others, und manchmal verwenden wir auch scope, innerhalb des Bereichs verwenden wir sql join-Tabellen – widjajayd

+0

Ich habe eine Tabelle mit Benutzern und viele Tabellen mit Nachrichten (jede Tabelle ist für ein Benutzerpaar). In der Benutzertabelle gibt es die Spalte "Nachrichten" mit den IDs der Nachrichtentabellen. Und innerhalb von user_controller muss ich wie in meiner Frage quirlen. Vielleicht können Sie Beispiel teilen?) – Wondergrauf

Antwort

1

wie etwa wenig das Design mit nur zwei Tabellen (Benutzer und Nachricht) nur Idee ändern, mit Details unter Benutzertabelle (id, name) Nachrichten-Tabelle (user_id, message_text) Sie Setup die Beziehung Benutzer has_many Nachrichten (siehe bitte diesen Link für mehr Führungs http://guides.rubyonrails.org/association_basics.html#the-has-many-association

user.rb

has_many :memberships 

message.rb

belongs_to :user 

Sie zum Beispiel Benutzer mit spezifischen ID und die Nachrichten für diesen Benutzer innerhalb users_controller.rb

def show 
    @user  = User.find(params[:id]) 
    # this find user 
    @messages = @user.messages 
    # get all the messages for specific users 
    end 
+0

Ich habe darüber nachgedacht. Aber ich bin nicht sicher über diese Methode Stabilität mit f.e. Millionen von Nachrichten (1000 Nachrichten für 1000 Benutzer ist es nicht so viel). Ich habe Angst vor Tabellen mit zu vielen Zeilen: D – Wondergrauf

+0

Wenn Sie mit Juwelenwechsler kombiniert mit Paginierung Juwel (will_paginate/Kaminari Juwel), dann müssen Sie sich keine Sorgen über die Stabilität der Daten laden, hier ist Link für ransack https://github.com/activerecord-hackery/ransack – widjajayd

+0

Vielen Dank, Kumpel! Ich werde versuchen, dies zu tun und dann diese wie Antwort zu markieren, wenn es für mich funktioniert :) – Wondergrauf

Verwandte Themen