У меня есть две модели, Story
и Chapter
. * Рассказ has_many
главы, одной из которых является глава, которая служит его первой главой. Раньше у меня был внешний ключ start_id
в таблице историй, чтобы указать, какая глава является первой. Однако, схему базы данных пришлось немного изменить, теперь у каждой главы есть code
. Если код '1a'
, то это первая глава истории, которой принадлежит эта глава.
Кажется, работает следующее, включая #create_start
:
has_many :chapters, :dependent => :destroy, :inverse_of => :story
has_one :start, :class_name => 'Chapter', :foreign_key => 'story_id', :conditions => {:code => '1a'}
Таким образом, внешний ключ start_id
таблицы историй не нужен, и #start
по-прежнему остается ассоциацией со всеми преимуществами (мне нужна #start
в качестве ассоциации, потому что я использую CanCan с ассоциациями для авторизации).
Есть ли у моего подхода какие-либо недостатки, которые я в настоящее время не могу осознать, или я относительно безопасен с ним?