CSV в DataMapper Импорт - PullRequest
       19

CSV в DataMapper Импорт

1 голос
/ 20 июня 2010

Это, наверное, очень просто, но я совсем новичок в рубине и активной записи.

У меня есть дамп базы данных 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?

1 Ответ

1 голос
/ 20 июня 2010

Я предполагаю, что клиент == компания.Вот пример для 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
...