Rails: невозможно преобразовать ActiveRecord :: Associates :: BelongsToAssociation в строку - PullRequest
0 голосов
/ 04 июня 2010

Этот проект rails очень прост, только начался, поэтому я не делал никаких странных лазеек или исправлений.

Модель to_s заменяет школу на bar, если nil:

class Department < ActiveRecord::Base
  belongs_to :school
  def to_s
    "foo" + (school || "bar")
  end
end

Говорит:

can't convert ActiveRecord::Associations::BelongsToAssociation into String

о выражении to_s


но в скрипте / консоли я могу взять отдел d, где школа == ноль и сказать

"foo" + (d.school || "bar")

и получите "foobar"

Ответы [ 2 ]

2 голосов
/ 04 июня 2010

Проблема в том, что школа не ноль. Это не строка, поэтому вы не можете добавить ее в "foo". Вот несколько вариантов, чтобы исправить это:

"foo" + (school || "bar").to_s

"foo" + (school ? school.to_s : "bar")

"foo" + (school.try(:to_s) || "bar")

"foo#{school || 'bar'}" 
0 голосов
/ 04 июня 2010

Попробуйте self.school

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