Rails 3 Проверка ошибок на наличие ассоциации - PullRequest
1 голос
/ 25 марта 2011

У меня есть модель "modela", которая имеет отношение has_many_through с моделью "submodelb" В контроллере я хочу проверить, есть ли у modela какая-либо подмодель, связанная с ним. Я попробовал два примера кода ниже; однако, оба выдают ошибку "неопределенный метод` submodelbs '", если у modela нет никаких подмоделей. Пожалуйста, помогите мне понять, что я делаю неправильно.

Образец 1: if !@modela.submodelbs.nil?
@submodelbs = @ modela.submodelbs
еще @submodelbs = [] конец

Образец 2: if !@modela.submodelbs.empty?
@submodelbs = @ modela.submodelbs
еще @submodelbs = [] конец

Ответы [ 4 ]

1 голос
/ 25 марта 2011

Метод считывателя, созданный has_many_through, всегда возвращает что-то похожее на массив, поэтому он никогда не должен возвращать ноль. Итак, вы не можете просто вернуть @modela.submodelbs всегда?

1 голос
/ 25 марта 2011

Вы можете использовать .present?, что противоположно blank?

@submodelbs = @modela.submodelbs.present? ? @modela.submodelbs : []

Но я думаю, что ваша проблема в том, что @modela может быть nil или вы не правильно определили ассоциации в модели.

0 голосов
/ 25 марта 2011

Почему бы просто не положить свои чеки в begin...rescue...end блок?

0 голосов
/ 25 марта 2011

я пользуюсь пробелом?

unless @modela.submodelbs.blank?
   #modela has submodelbs
end

но ошибка messege предполагает, что у вас может быть что-то не так с определением ассоциации ...

Также то, что вы пытаетесь достичь, можно сделать с помощью одной строки

@modela.submodelbs ||= []

если подмодели ноль, то пустой массив будет присвоен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...