Am 16.07.2007 um 17:25 schrieb Thomas Preymesser:



On 16/07/07, Bernd Schmeil <[EMAIL PROTECTED]> wrote:
Ich habe keine Ahnung was Du mit enum Felder meinst, aber Du kannst
im Model explizit set_primary_key "enum_feld" setzen und in den Migrations
mit execute "insert into enum_tabelle ..." arbeiten.

enum- oder enumeration (Aufzählung) sind Felder die nur eine der definierten Werte annehmen können. Du kannst bei Datenbanken oder auch in anderen Programmiersprachen sagen, dieses Feld kann beispielsweise nur die Werte 'rot', 'gelb', 'grün' annehmen. Falls etwas anderes zugewiesen wird, dann ist dies ein Fehler.

Railsway-ig wäre ja, die Constraints eben nicht in der Datenbank zu definieren. Enum-Felder sind (zumindest in MySQL, zumindest als ich mich noch mit sowas beschäftigt habe) ja eh eher so varchar-artig. Meine Idee wäre also die Einschränkung auf 'rot', 'gelb','grün' eher über validations im Modell abzuhandeln. Das ginge z.B. über ein validates_format_of oder gar über ein

def validate
  unless ['rot','gelb','gruen'].include? mein_enum_feld
    errors.add('blah')
  end
end

Das liess sich sicher auch sehr gut in einen helper oder sowas verpacken.

Dass diese Idee nicht sehr DBA-Konform ist, ist mir klar, ist aber kompatibel über alle db's und machts halt im ruby-code und nicht im SQL.

Gruß,

Jan
_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Antwort per Email an