2013-10-07 91 views
0

我的Rails 4應用程序中的兩個模型是 - Accommodation.rbAccount.rb - 每個住宿has_one帳戶。從其他模型調用模型

在我Accommodation.rb我有這樣的方法:

def my_method 
    self.field = "Something" 
    save! 
end 

,我打電話使用從AccommodationsController.rb方法:

accommodation.my_method 

,但我也需要能夠調用一個方法在我Account.rb從我的Accommodation.rb模型,同時保持關聯,以便如果我創建或更新帳戶表中的記錄,它將知道哪個住宿ID參考。對東西的線路:

Account.accommodation.my_other_method 

,但我知道這是行不通的,因爲它是一個「刺在黑暗中」

注意我試圖讓我的邏輯在我的模型

+1

您可能只需爲相關記錄調用'@ accommodation.account'和'@ account.accommodation'。 –

回答

4

要引用關聯的模型(例如爲了調用它的方法),只需使用與模型名稱匹配的自動生成的方法。

例如,如果住宿has_one帳戶和accommodation是住宿對象,您可以撥打accommodation.account來引用關聯的帳戶。該參考可以有方法調用了它正常的:accommodation.account.my_account_instance_method(foo)

另外,如果你在住宿的方法定義的時候,你可以直接引用的方法:

class Accommodation 
    has_one :account 

    def do_something 
    account.my_account_instance_method 
    end 
end 

所有這一切都非常好記錄在Rails associations basics guide中,我強烈建議您至少簡要地瀏覽一下。

+0

非常有幫助 - 謝謝 – tommyd456

+0

是啊!那就對了。 –