2009-04-24 3 views
1

Ich versuche, ein ActiveRecord-Modell namens "Search" ohne eine Tabelle zu erstellen. Ich erhalte diesen Fehler, wenn ich @search = Search.new mache.Wie halte ich ActiveRecord an, um nach einer Tabelle zu suchen?

sql :: Fehler: Table 'searchdemo_development.tablelesses' existiert nicht: SELECT * FROM tablelesses

ich die Idee von diesem Kommentar bin mit: Rails model without database. Ich habe auch die gleiche Art von Fehlern, den Grund tun:

class Search < ActiveRecord::Base 

end 

Wie kann ich Activerecord für einen Tisch stoppen bekommen suchen?

Antwort

1

kann ich von ein paar Gründe denken Sie könnte so etwas wie dies tun wollen. Vielleicht möchten Sie einige der nicht db-bezogenen Methoden auf ActiveRecord nutzen oder Ihr Objekt an etwas übergeben, das eine ActiveRecord-Instanz erwartet. Ohne weitere Informationen ist es unmöglich zu sagen, ob die Entscheidung, AR hier zu verwenden, richtig oder falsch ist.

Auf jeden Fall, wenn Sie auf diesem Weg ...

dieses Railscast

Check-out http://railscasts.com/episodes/121-non-active-record-model

fortsetzen wollen und auch dieses Juwel Kasse: http://github.com/kennethkalmer/activerecord-tableless-models/tree/master

+0

Was ich versuche, ist ähnlich wie http://railscasts.com/episodes/111-advanced-search-form, außer dass ich keine Suchvorgänge in einer Datenbank speichern oder sogar eine Tabelle für das Modell haben möchte . – sutee

0

Warum im Namen des Herrn möchten Sie ein actve Rekordmodell ohne einen Tisch? Der Zweck eines aktiven Datensatzmodells besteht darin, mit einer Datenbank zu kommunizieren. Ich nehme an, dass es unmöglich ist, ein aktives Rekordmodell ohne eine db-Tabelle zu haben.

Vielleicht möchten Sie eine reguläre Klasse?

class Search 
    # your methods here 
end 
+0

Ich bin damit einverstanden, dass es eine scheint seltsame Verwendung des ActiveRecord-Musters, um eine Klasse ohne eine Tabelle zu haben, aber in Wirklichkeit sind die Validierungen, die von Rails 'Implementierung von ActiveRecord bereitgestellt werden, immer noch nützlich für Modelldaten, die Sie nicht beibehalten möchten. Und es ist sicherlich nicht unmöglich zu tun. –

+0

Wenn Sie Validierungen möchten, gibt es dafür ein Juwel, das nicht mit Rails oder Active Record verwandt ist. Ich erinnere mich nicht an den Namen, aber ich denke du wirst es auf RubyForge finden. Oder Sie können Ihre eigenen schreiben;) http://stackoverflow.com/questions/775976 –

+0

Oh, und hoffentlich ändert sich das in Rails 3.0 mit ActiveModel. 'include ActiveModel :: Validations', zu Mittag essen. = D –