Я новичок в рельсах и даже не знаю, правильный ли это способ решения моей ситуации.
У меня есть модель "Club" ActiveRecords, которая имеет ассоциацию "has_many" с моделью "Member". Я хочу, чтобы вошедший в систему «Клуб» мог администрировать только своего «члена», поэтому в начале каждого действия в модели «Участник» я делал что-то похожее на следующее:
def index
@members = Club.find(session[:club_id]).members
для доступа к нужным участникам. Это, однако, оказалось не очень СУХОЙ, как я делал то же самое в каждом действии. Поэтому я подумал об использовании чего-то, эквивалентного тому, что будет называться конструктором в других языках. Метод инициализации, как я понял. Это, однако, не работало, это объяснило мне почему и предложило альтернативу. After_initialize.
def after_initialize
@club = Club.find(session[:club_id])
end
def index
@members = @club.members
....
, похоже, не работает в любом случае. Есть какие-нибудь указатели на то, почему?
You have a nil object when you didn't expect it!
The error occurred while evaluating nil.members
Заставляет меня думать, что @club var вообще не установлен.
Кроме того, действительно ли это решение хорошее? Это затрудняет реализацию любого «супер администратора», который может управлять членами во всех клубах. Любые идеи о том, где я что-то упускаю?