Поиск:

Ответ в темуСоздание новой темы Создание опроса
> разное поведение одного и того же кода 
:(
    Опции темы
m_maxser
Дата 9.4.2013, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 5.2.2008

Репутация: нет
Всего: нет



Здравствуйте,
Есть код, точнее маленькая часть кода, которая безоговорочно работает на машине свего автора и на сервере. А вот у меня работает не всегда. На поиск причины потратил кучу времени, но ничего не нашел. Везде Ruby 1.8.7 и Rails 3.0.11. Сервер - Linux. У меня и у автора кода W7. Вообще компы у нас отличаются только железом. 

Проблема с моей стороны выглядит так: я запускаю проект (Rails start) -> все работает -> перехожу на страницу с тем самым кодом -> получаю ошибку undefined method for nil:NilClass.

Если получилось так как я описал, то я просто перезапускаю рельсы (Rails start) до тех пор пока этот код не начнет работать. Иногда все работает вообще с первого раза, иногда нужно до 10 перезапусков, но рано или поздно оно начинает работать. В чем дело?

Теперь подробнее...
есть две модели
Код

class Publication < ActiveRecord::Base
  ...
  has_many :params
  ...
  accepts_nested_attributes_for :params
  ...

Код

class Param < ActiveRecord::Base
  ...
  belongs_to :publication
  belongs_to :characteristic
  ...
  def value=(value)
      if characteristic.is_a? Characteristic::Bool
          self.string_value = value
          self.bool_value   = !value.blank?
      else
          self.send(self.characteristic.methodname+ '=', value)
      end
  end

...
end

ошибка возникает в контроллере публикации во время множественного присваивания
Код

publication = Pulication.first
chrs = Characrestic.all
characteristics_params = [{:characteristic => chrs[1], :value => 'value1'}, {:characteristic => chrs[2], :value => 'value2'}, {:characteristic => chrs[3], :value => 'value3'} ...]
publication.params_attributes = characteristics_params # ==> вот в этот момент может заглючить 

Т.е. последняя строка передает каждый из вложенных хешей в метод "value=", модели Param. Если конкретный (Rails start) был удачным, то у publication будет коллекция params, содержащая нужные мне данные. Но если рельсы, почему-то, криво запустились, то в метод "value=" из хеша передастся только value, а characteristic_id будет равен nil. Т.е. self.inspect выведет:
Код

#<Param id: nil, characteristic_id: nil, ...>

и соответственно я получаю ошибку 
Код

undefined method 'methodname' for nil:NilClass

Думаю, что проблема не связана с "accepts_nested_attributes_for". Проблема скорее всего в получении данных accessor-методом "value=". Т.к. эту же ошибку может вызвать код вроде:
Код

p = Param.new(characteristics_params[0])

P.S.: Код программы сильно упрощен, особенно код контроллера. Но этого достаточно для понимания ситуации.
PM MAIL   Вверх
bilbobagginz
Дата 18.4.2013, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: нет
Всего: 317



в обоих случаях web server тот же ? те же версии ?



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
m_maxser
Дата 23.4.2013, 06:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 5.2.2008

Репутация: нет
Всего: нет



у меня и у разработчика WEBrick, на хостинге - аппач
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby on Rails"
source777
  • С чего начать? начинаем
  • Документацию смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby On Rails | Следующая тема »


 




[ Время генерации скрипта: 0.0984 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.