Помощь ассоциаций Rails - PullRequest
       1

Помощь ассоциаций Rails

0 голосов
/ 28 сентября 2010

У меня есть модель Users, которая имеет много проектов. Но каждый проект разных типов. WebApplication, DesktopApplication и так далее. Все эти различные типы имеют свои собственные определенные поля, и, тем не менее, они имеют общие поля, которые будут храниться в таблице проектов.

Я думал, что это решение имеет несколько has_one для каждого типа проекта в модели проекта. Это путь?

1 Ответ

0 голосов
/ 28 сентября 2010

Ваша лучшая ставка - это, вероятно, один пользователь на множество проектов, тогда имейте «расширенную информацию», которая полиморфно связана. Я думаю, что пример описал бы лучше, чем это предложение.

class User < ActiveRecord::Base
  has_many :projects
end

class Project < ActiveRecord::Base
  belongs_to :user
  has_one :project_type, :as => :type
end

class ProjectType < ActiveRecord::Base
  belongs_to :type, :polymorphic => true
end

class WebApplication < ProjectType
  # fields here
end

class DesktopApplication < ProjectType
  # fields here
end

@project.type = WebApplication.new
@otherproject.type = DesktopApplication.new

К сожалению, я не могу проверить это, чтобы гарантировать, что это работает, но я думаю, что я все понял правильно:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...