Импортиране на CSV към DataMapper

Това вероятно е много просто, но аз съм съвсем нов в ruby ​​и активния запис.

Имам CSV дъмп на база данни, който се опитвам да импортирам в база данни с помощта на DataMapper. Имам проблеми с разбирането кой тип връзки трябва да дефинирам в моделите, така че да съответства на това, което е дефинирано в CSV.

Ето какви данни имам от CSV:

Stages:
id
staff_id
project_id
job_id
company_id

Projects:
id
company_id

Jobs:
id
project_id
company_id

Client:
id

Staff:
id

Например: етапите принадлежат ли_на проекти или това е отношение has_many?


person Tom    schedule 20.06.2010    source източник
comment
Използвате ли ActiveRecord или DataMapper? (това са 2 различни неща)   -  person mikej    schedule 20.06.2010
comment
Съжалявам, използвам DataMapper, но предполагам, че типовете релации са подобни? напр. едно към много и т.н   -  person Tom    schedule 20.06.2010


Отговори (1)


Предполагам клиент == компания. Ето пример за ActiveRecord

class Stage < ActiveRecord::Base
  belongs_to :staff
  belongs_to :project
  belongs_to :job
  belongs_to :company, :class => "Client"
end

class Project < ActiveRecord::Base
  belongs_to :company, :class => "Client"
  has_many :stages
end

class Job < ActiveRecord::Base
  belongs_to :project
  belongs_to :company, :class => "Client"
  has_many :stages
end

class Client < ActiveRecord::Base
  has_many :jobs, :foreign_key => "company_id"
  has_many :projects, :foreign_key => "company_id"
  has_many :stages, :foreign_key => "company_id"
end

class Staff < ActiveRecord::Base
  has_many :stages
end

Ето един пример за DataMapper:

class Stage
  include DataMapper::Resource
  property :id, Serial
  belongs_to :staff
  belongs_to :project
  belongs_to :job
  belongs_to :company, "Client"
end

class Project
  include DataMapper::Resource
  property :id, Serial
  belongs_to :company, "Client"
  has n, :stages
end

class Job
  include DataMapper::Resource
  property :id, Serial
  belongs_to :project
  belongs_to :company, "Client"
  has n, :stages
end

class Client
  include DataMapper::Resource
  property :id, Serial
  has n, :jobs, :foreign_key => "company_id"
  has n, :projects, :foreign_key => "company_id"
  has n, :stages, :foreign_key => "company_id"
end

class Staff
  include DataMapper::Resource
  property :id, Serial
  has n, :stages
end

За вноса трябва да го направите в специален ред:

  1. Client, Staff, защото могат да съществуват независимо от всички други модели
  2. Project, зависи само от Client
  3. Job, зависи от Project и Client
  4. Stage, зависи от Staff, Project, Job и Client
person jigfox    schedule 20.06.2010
comment
Не мога да ти благодаря достатъчно. Изглежда, че ми липсваше концепцията за Foreign_key и в крайна сметка получих много полета като client_client_id. - person Tom; 21.06.2010