Ограничить пользователя для просмотра только связанных записей в рельсах
У меня есть приложение с тремя моделями (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