attr_accessor одного класса возвращает nil в связанном классе

У меня есть класс квартиры с attr_accessor, который называется checkin (не нужно сохранять в БД)

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

  has_many :rooms
  has_many :beds through: rooms
end

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

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

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

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


person Uri Klar    schedule 08.12.2013    source источник


Ответы (1)


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

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

person janfoeh    schedule 08.12.2013
comment
Ясно.. Так что, вероятно, мне следует передать его как параметр из метода в квартире, вызывающего метод в постели. Спасибо - person Uri Klar; 08.12.2013
comment
Подождите, я немного запутался.. Это одна и та же квартира, но не тот же экземпляр? Не сохраняются ли attr_accessors между запросами? - person Uri Klar; 08.12.2013
comment
Нет, они не - это потребует настойчивости. При каждом запросе к указанному выше методу контроллера show Rails загружает запрошенную квартиру из базы данных и помещает ее в переменную экземпляра @apartment. Все, что не сохраняется в базе данных, теряется. - person janfoeh; 08.12.2013