Я работаю над своим первым ruby сайтом на рельсах, поэтому go мне проще!
Я создаю веб-сайт с единственной целью - запрашивать два существующих набора данных, поэтому данных нет ввод необходим в приложении. У меня есть два набора данных для загрузки на веб-сайт: Locations и Train_Journeys. В одном месте может быть много поездок на поезде. Путешествие на поезде имеет одно местоположение.
В необработанных данных (перед загрузкой на веб-сайт) - в Locations есть существующий заполненный столбец уникального идентификатора с именем locationid, а в таблице Train_Journeys есть столбец внешнего ключа location_id, который ссылается на запись в Местоположение.
Мне нужно создать ассоциацию в Rails, чтобы я мог просмотреть местоположение, а затем просмотреть список связанных поездок на поезде. Большинство руководств и вопросов, которые я нашел в Интернете, имеют смысл, но предназначены для создания новых таблиц, в которых данные будут создаваться, а не загружаться. Я думаю, что мне нужно создать настраиваемый первичный ключ для Locations?
Вот что у меня есть на данный момент. Ошибка на этапе заполнения (для таблицы местоположений).
NoMethodError: undefined method `locationid = 'for #Location: 0x0000000003ec5a60
Создание модели местоположения
class CreateLocations < ActiveRecord::Migration[5.0]
def change
create_table :locations, id: false, primary_key: :locationid do |t|
t.text :name
t.etc.......
end
end
end
Создание модели train_journey
class CreateTrainJourneys < ActiveRecord::Migration[5.0]
def change
create_table :train_journeys do |t|
t.integer :location_id
otherfields....
t.timestamps
end
end
end
Location.rb
class Location < ApplicationRecord
has_many :train_journeys
self.primary_key = "locationid"
end
Train_journeys.rb
class TrainJourney < ApplicationRecord
has_one :location
end
Код семян
require 'csv'
csv_text = File.read(Rails.root.join('lib', 'seeds', 'locations.csv'))
csv = CSV.parse(csv_text, :headers => true, :encoding => 'ISO-8859-1')
csv.each do |row|
t = Location.new
t.name = row['name']
t.locationid = row['locationid']
t.population = row['population']
t.etc.....