Добавление переменных из объекта, переданного из модели в контроллер - PullRequest
0 голосов
/ 20 сентября 2010

У меня есть модель Person.Когда создается новый Person, я хочу установить random_variable в контроллере и передать его как часть объекта @person.Я пробовал

Модель

attr_accessor :random_variable

Контроллер:

def create
  @person = Person.new(params[:person])
  @person.random_variable = 'A Random string'  
  @person.save          
end

К сожалению, если я попытаюсь получить доступ к self.random_variable в модели, это не сработает (Я получаю ноль).

Может кто-нибудь объяснить, почему это не работает, и как это сделать?(и да, я знаю, что это не совсем соответствует соглашению MVC, но единственный другой способ сделать то, что мне нужно, это очень тяжелый не сухой контроллер)

Ответы [ 3 ]

0 голосов
/ 20 сентября 2010

Вы пытались просто использовать update_attribute?

update_attribute(:random_variable, 'A Random string')

Или, может быть, прыгните в скрипт / консоль, чтобы точно увидеть, что происходит.

0 голосов
/ 21 сентября 2010

Что-то странное происходит.Я должен был объяснить, как предположил Брэд, что я пытаюсь получить доступ к random_variable внутри метода установки для другого объекта.Я понял, что параметры были переданы контроллеру, а модель получала доступ только после вызова @ person.save.По какой-то причине установщик, кажется, подвергается удару перед контроллером.

Я основываю это на том факте, что, когда я случайно помещаю оператор отладчика в метод установщика модели и контроллер одновременно, отладчик моделибыл вызван первым.Я явно собираюсь немного почитать, если кто-то не сможет это объяснить.К сожалению, мне нужно, чтобы это работало сегодня вечером, так что я собираюсь пока что обойтись взломом

0 голосов
/ 20 сентября 2010

То, что вы описываете, должно работать.Как вы определяете, что случайная величина на самом деле равна нулю?Вы пробовали использовать отладчик?

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