2013-12-08 45 views
0

我有一個公寓類叫做籤的attr_accessor(不需要在DB被保存)attr_accessor一類返回nil在關聯類

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 但我得到零值

這方法在apartment中被調用。我已經打電話了,當我在公寓模型裏時,checkin變量有一個值。 爲什麼我從牀上打電話時得不到零? 感謝所有的幫手!

回答

0

你說你是從bed調用它 - 如bed.apartment.checkin

如果這是真的,那是你的問題:你只在實例變量@apartment中保存的Apartment實例上設置checkin。這與您通過bed.apartment.checkin收到的實例不一致。

+0

我明白了。所以我應該把它作爲參數從Apartment中的方法調用牀上的方法。謝謝 –

+0

等一下,我有點困惑..這是同一間公寓,但它不是同一個實例?請求之間不要attr_accessors持續? –

+1

不,他們不會 - 這將需要持久性。在上面對'show'控制器方法的每個請求中,Rails從數據庫加載所請求的Apartment new,並將其放入'@ apartment'實例變量中。沒有在數據庫中保存的所有內容都將丟失。 – janfoeh