Как я могу расширить эту модель Ruby ActiveRecord? - PullRequest
2 голосов
/ 22 сентября 2010

Я создаю этот маленький планировщик шоу.

У меня есть таблица показывает, с title:string и description:text. Я хочу добавить дни и время к шоу (у каждого шоу может быть несколько дней, и у каждого дня есть свои СОБСТВЕННЫЕ времена). Как я могу это сделать?

Я думал о том, чтобы составить таблицу времен. С колонками (show_id, day и time). Затем, перечисляя шоу, вы ищете время, которое соответствует этому show_id, и сортируете по дням.

Любые идеи, предложения и т. Д. Приветствуются.

Ответы [ 3 ]

2 голосов
/ 22 сентября 2010

Вы создадите модель Show с помощью следующей команды:

script/generate model Show title:string description:text

Затем создадите модель ShowTime:

script/generate model ShowTime date:datetime time:datetime

Затем в вашем show.rb файл модели, вы бы определили отношение has_many следующим образом:

 has_many :showtimes

А в файле модели ShowTime вы бы определили отношение belongs_to следующим образом:

 belongs_to :show
1 голос
/ 22 сентября 2010

Мне кажется, самое простое решение этого вопроса - использовать один объект DateTime, поскольку вы можете получить день и время из объекта Time.

<br> script/generate model ShowTime time:datetime<br> script/generate model Show title:string description:text showtime:references

Тогдаположить в принадлежащих / имеет много ассоциаций, на которые ссылался Джейкоб.Я думаю, что наличие отдельной модели для шоу-тайма было бы лучше и позволило бы добиться большей гибкости.Вам также следует обратиться к методу strftime объекта Time, чтобы отформатировать время по своему вкусу.

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

Я думаю, что ваша идея очень разумна (особенно для тех, кто не имеет опыта программирования). Если вы заинтересованы в «Rails-способе» реализации этого, я бы порекомендовал проверить has_many отношение в руководстве Rails . (И я рекомендую это руководство в целом, так как оно мне очень помогло с Rails)

...