Frage

Ich bin mit dwilkie Ausländer Plugin für Schienen. Ich habe eine Tabelle Schöpfung Aussage, dass aussieht wie:

create_table "agents_games", :force => true, :id => false do |t|
  t.references :agents,     :column => :agent_id, :foreign_key => true, :null => false
  t.references :games,      :column => :game_id, :foreign_key => true, :null => false
end

Dies ist jedoch generiert die folgende SQL:

[4;35;1mSQL (2.7ms)[0m [0mCREATE TABLE "agents_games" ("agents_id" integer NOT NULL, "games_id" integer NOT NULL) [0m

Ich möchte die Spalten agent_id und game_id genannt werden - nicht agents_id und games_id. Wie kann ich verhindern, dass Rails die Spalten von pluralizing?


Ich habe versucht, die folgend in meiner enviornment.rb Datei, die nicht geholfen haben:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.uncountable "agent_id", "game_id"
end
War es hilfreich?

Lösung 2

Gefunden die Lösung für mein Problem. Ich hatte von Referenzen Fremdschlüssel separat zu erklären, wie so:

create_table "agents_games", :force => true, :id => false do |t|
  t.references :agent
  t.foreign_key :agents,     :column => :agent_id, :null => false
  t.references :game
  t.foreign_key :games,      :column => :game_id, :null => false
end

Damit konnte ich die Beugung Sachen herausnehmen.

Andere Tipps

In der Regel kämpfen nicht Active Konventionen, es ist Teil dessen, was Arbeit AR macht so gut. wenn dies jedoch ein Fall Sie wollen eine Ausnahme machen, sie über einige Code in Ihre environment.rb leicht genug ist, überprüfen http://api.rubyonrails.org/classes/Inflector/Inflections.html für ein Beispiel.

Ich denke, Sie bekommen, was Sie wollen, wenn Sie die einzigartigen Modellnamen in der Referenz verwenden, wie diese:

create_table "agents_games", :force => true, :id => false do |t|
  t.references :agent,     :foreign_key => true, :null => false
  t.references :game,      :foreign_key => true, :null => false
end

Dies ist ein klarer Weg, zu bedenken, daß jede Zeile der Join-Tabelle ein agent_id und ein game_id haben wird, also ein Mittel mit einem Spiel Referenz wird.

Die zusätzliche Flexion oder Fremdschlüssel Erklärungen würde in diesem Fall nicht erforderlich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top