Я построения API в рельсах, и у меня есть 2 модели: Автомобиль, который has_one:: документМодель ассоциация по внешнему ключу, не целое
class CreateVehicles < ActiveRecord::Migration
def change
create_table :vehicles do |t|
t.string :uuid, limit: 36, null: false, index: true
t.string :license_plate_id
t.integer :mileage
t.string :mileage_unit, default: 'km'
t.belongs_to :user, index: true
t.timestamps null: false
end
end
end
Vehicle.rb
class Vehicle < ActiveRecord::Base
audited
include UuidConcern
belongs_to :user
serialize :response, JSON
has_one :vehicle_document, dependent: :destroy
end
VehicleDocument belongs_to:: Автомобиль
class CreateVehicleDocuments < ActiveRecord::Migration
def change
create_table :vehicle_documents do |t|
t.string :uuid, limit: 36, null: false, index: true
t.integer :status, default: 0
t.attachment :file
t.belongs_to :vehicle, index: true
t.timestamps null: false
end
add_index :vehicle_documents, :status
end
end
vehicle_document.rb:
class VehicleDocument < ActiveRecord::Base
audited
include UuidConcern
self.primary_key = :uuid
belongs_to :vehicle
end
проблема в том, что я хочу использовать uuid для идентификатора автомобиля. Я не хочу показывать реальный идентификатор вне моего API. Как я должен это делать? Должен ли я сделать это в файле миграции? модель? Должен ли я не делать этого? Большое спасибо
http://stackoverflow.com/questions/750413/altering-the-primary-key-in-rails-to-be-a-string – Ilya
Это не объясняет, как определить FK, но только первичный. Определение uuid как основного не является проблемой. Проблема заключается в том, что столбец vehicle_id в базе данных является строкой, а не целым числом. –
Пожалуйста, разместите свои модели, чтобы мы могли видеть ассоциации, как вы их определили. Может быть, просто добавление 'foreign_key:: uuid' в соответствующие ассоциации может делать то, что вы ищете, но невозможно сказать, не видя этот код. – jaydel