В моем приложении Rails как я могу добавить два объекта в мою модель? - PullRequest
2 голосов
/ 05 апреля 2011

Это название, вероятно, звучит неправильно, но, простите, я впервые изучаю Rails после десяти лет разработки Windows.В настоящее время у меня есть модель под названием Drill, которая должна содержать два упражнения.Чтобы достичь этого, основываясь на моих текущих знаниях Rails, я создал ассоциацию has_many между моделями упражнений и упражнений ...

class Drill < ActiveRecord::Base
  has_many :exercises, :dependent => :destroy
end

Но я не хочу, чтобы список упражнений с открытым концом был вместо этого 'Мне бы хотелось иметь две ссылки на один объект Exercise, один называется left_drill, а другой - right_drill.Основываясь на документации, я изменил код на этот ...

class Drill < ActiveRecord::Base
  has_one  :right_drill, :class => :exercise
  has_one  :left_drill, :class => :exercise
end

Но я не знаю, правильно ли это, и мне трудно его протестировать, потому что я не знаюкак настроить модель упражнения соответственно.На данный момент модель упражнений остается прежней ...

class Exercise < ActiveRecord::Base
  belongs_to :drill
end

Трудно понять, как это сделать, и, хотя я продолжаю читать документы, я надеялся, что кто-то может дать мненебольшое направление.

Большое спасибо за вашу мудрость!

1 Ответ

3 голосов
/ 05 апреля 2011

То, что вы имеете, правильно, хотя обычно явное имя класса задается в виде строки, например:

class Drill < ActiveRecord::Base
  has_one :left_drill, :class => "Exercise"
  has_one :right_drill, :class => "Exercise"
end

Вы также можете легко получить доступ к обоим объектам сверления следующим образом, где my_drill является экземпляром Drill:

my_drill.left_drill
my_drill.right_drill

Вы можете рассмотреть возможность переименования их left_exercise и right_exercise, чтобы лучше отразить, что они являются экземпляром модели Exercise, а не модели Drill.

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