2016-12-13 3 views
0

Ich muss Schienen mit einer vorhandenen MSSQL DB verwenden. Ich habe zwei Modelle erstellt - Ordnung und Gegenstände und Assoziation zwischen ihnen geschaffen (1 bis viele)Schienen - ändern Spalte Name im Modell für MS SQL Server

class Order < ActiveRecord::Base 
    self.table_name = 'mobile_orders' 
    has_many :items 
end 

class Item < ActiveRecord::Base  
    self.table_name = 'mobile_items' 
    belongs_to :order 
end 

In mobile_items Tabelle habe ich eine Spalte mit dem Namen ‚order_no‘. Ich habe versucht, den Verein in Rails zu überprüfen, aber wenn ich dies tun:

order = Order.last 
order.items 

die Adapter Abfrage der Suche nach ‚order_id‘ läuft (wenn mein Spaltenname ist ‚order_no‘), zB:

EXEC sp_executesql N'SELECT [mobile_items].* FROM [mobile_items] WHERE [mobile_items].[order_id] = @0', N'@0 int', @0 = 9 [["order_id", 9]] 

Gibt es eine Möglichkeit, 'order_no' für diese Abfrage zu verwenden? Ich habe schon versucht, diese in Auftragsmodell aber kein Glück:

alias_attribute :order_id, :order_no 

Antwort

0

Sicher, können Sie die foreign_key Option angeben:

belongs_to :order, foreign_key: :order_no 

Suchen Sie nach foreign_key Option in Giudes on belongs_to und Associations docs.

+0

nein, immer noch dasselbe - TinyTds :: Fehler: Ungültiger Spaltenname 'order_id'. Bitte beachten Sie, dass ich Gem 'ActiveRecord-SQL-Server-Adapter', '~> 4.2.0' für MS SQL-Verbindung verwenden – 82skynet

+0

@ 82skynet was für Primärschlüssel verwendet wird, "ID" oder etwas anderes? –

+0

es ist 'ID' für beide Tabellen. 'order_no' ist nur eine normale Spalte – 82skynet