2013-12-08 2 views
0

У меня есть класс квартиры с attr_accessor названия приезда (не должен быть сохранено в БД)attr_accessor из одного класса возвращает NIL в ассоциированном классе

class Apartment < ActiveRecord::Base 
    attr_accessible :checkin 
    attr_accessor :checkin 

    has_many :rooms 
    has_many :beds through: rooms 
end 

В моем контроллере я устанавливаю значение CheckIN в

def show 
    @apartment.update_attributes(checkin: session[:checkin]) 
end 

Когда страница делает я называю методом слоя, который пытается получить доступ к self.room.apartment.checkin , но я получаю значение ноля

Этих метод вызывается методом в квартире. Я отклонил вызов, и когда я внутри модели квартиры, переменная checkin имеет значение. Почему я получаю ноль, когда звоню с кровати? Спасибо всем помощникам!

ответ

0

Вы сказали, что звонили ему от bed - как в bed.apartment.checkin?

Если это правда, это ваша проблема: вы только установили checkin на экземпляр квартиры, сохраненный в переменной экземпляра @apartment. Это не идентично экземпляру, который вы получаете через bed.apartment.checkin.

+0

Я вижу .. Поэтому я должен, вероятно, передать его как параметр из метода в квартире, который вызывает метод в постели. Спасибо –

+0

Подожди, я немного смущен. Это одна и та же квартира, но это не тот же пример? Не сохраняются ли attr_accessors между запросами? –

+1

Нет, они этого не делают - это потребует настойчивости. При каждом запросе этого метода контроллера show show, Rails загружает запрошенную Квартиру new из базы данных и помещает ее в переменную экземпляра '@ apartment'. Все, что не сохраняется в базе данных, теряется. – janfoeh

Смежные вопросы