Как устранить конфликт между атрибутом модели рельсов и именем гема? - PullRequest
3 голосов
/ 13 марта 2012

на рельсах 3.2.1.У меня есть модель с именем Car с атрибутом rate (указывает количество цены).Я использую драгоценный камень ajaxful_rating, который связывает метод под названием rate (чтобы оценить, насколько хорош учитель) с Car.

Так что, на мой взгляд, когда япытаясь показать количество цены с:

<%= @car.rate %>

Я получаю синтаксическую ошибку, потому что есть путаница имен.Как я могу сообщить Rails, что я хочу вызвать атрибут rate, а не метод rate?Есть ли простой способ решить эту проблему, не откатывая мою БД и не переименовывая атрибут?

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Вы можете использовать read_attribute:

@car.read_attribute(:rate)

но я предлагаю вам разрешить конфликт, переименовав один из них, так как это только вызовет у вас проблемы и замешательство в будущем.

Вам не нужно откатывать базу данных, чтобы переименовать столбец, вам просто нужно создать новую миграцию , которая сделает это.

1 голос
/ 13 марта 2012

Ну, во-первых, вам не придется откатывать базу данных, чтобы переименовать атрибут.Вы бы просто создали новую миграцию с этим одним изменением: Как я могу переименовать столбец базы данных в миграции Ruby on Rails? Такие изменения необходимы время от времени, и поэтому в Rails есть этот механизм для обработкиих.

Но чтобы ответить на ваш вопрос, альтернативным обходным решением было бы написать новый метод для автомобиля, который фактически дает доступ к атрибуту, подобному этому:

def rate_price
  read_attribute(:rate)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...