Ограничить пользователя для просмотра только связанных записей в рельсах

У меня есть приложение с тремя моделями (Profile -> SubModel -> SubSubModel), соединенных вместе, имеет много связей. Я пытаюсь ограничить пользователя после входа в систему только получением записей, связанных с его профилем. Я очень новичок в рельсах, и это то, что я пытался в модели профиля

has_many :submodels, :conditions => {:profile_id => self.id}

но это возвращает пустой набор данных при вызове с Profile.find_by_id(1).submodels, как еще можно добиться того, что я пытаюсь сделать. Или я должен обработать это в контроллере или представлении вместо этого, я подумал, что это хорошо подходит для модели, чтобы справиться с этим.

2 ответа

Решение

Вам не нужны никакие условия для вызова has_many - по умолчанию он возвращает только подмодели, связанные с профилем.

Если вы назвали свои классы и внешние / первичные ключи для соглашений Rails, просто используйте

class Profile
  has_many :sub_models
end

и пусть Rails это выяснит.

Это предполагает следующее:

  • Профиль оборачивает таблицу с именем profiles, который имеет числовой первичный ключ с именем id
  • SubModel оборачивает таблицу с именем sub_models, который имеет числовой внешний ключ с именем profile_id
Другие вопросы по тегам