Por que estou recebendo nulo para um relacionamento pertencente ao Rails?
-
24-09-2019 - |
Pergunta
Estou tendo um problema no meu aplicativo Ruby on Rails com um modelo em que um relacionamento pertence_to continua acabando sendo nulo.
Dados os seguintes modelos:
class Chassis < ActiveRecord::Base
belongs_to :model
belongs_to :chassis_size
end
class Model < ActiveRecord::Base
has_many :chassis
end
class ChassisSize < ActiveRecord::Base
has_many :chassis
end
Agora, eu esperaria que, na minha visualização do índice do chassi, eu veria o modelo e os dados do Chassis_size:
<% @chassis.each do |chassis| %>
<%= chassis.id %><br />
<%= chassis.model.name %><br />
<%= chassis.chassis_size.size %><br />
<% end %>
Mas recebo um erro de que o chassis_size.size é nulo:
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.size
Olhando para os dados no banco de dados, tudo parece estar correto.
Não sei por que o modelo funciona, mas o chassis_size não. o que estou perdendo? Por que os dados chassis_size parecem carregar?
Solução
O tamanho é uma coluna em sua tabela chassis_sizes?
Nesse caso, esta é uma palavra reservada no rubi, pois é o método para retornar o comprimento de uma matriz.
Todo chassi tem um chassi_size? Experimente isso:
<% @chassis.each do |chassis| %>
<%= chassis.id %><br />
<%= chassis.model.name %><br />
<% if chassis.chassis_size %>
<%= chassis.chassis_size.description %>
<% else %>
No chassis_size exists for this chassis
<% end %><br />
<% end %>