2013-11-26 38 views
0

這是一個非常新手的問題,但我花了很多時間試圖弄清楚。如何檢查Rails模型中的雙關係?

檢查我的數據庫結構:

Users: 
id, user_name, ... 

Smokes: 
id, latitude, longitude, ... 

Lights: 
id, user_id, smoke_id, ... 

Users has_many Lights 
Smokes has_many Lights 
Lights belongs_to Users 
Lights belongs_to Smokes 

我需要知道,如果一個用戶在決定煙光。

事情是這樣的:

# User model... (user.rb) 
    def lighted?(smoke_id) 
    # Return true if User lighted the smoke. 
    smoke = Smoke.find_by_id(smoke_id) 
    return true if self.lights << smoke 
    end 
+0

小技巧,而且比什麼都重要指導。 Smoke.find_by_id(smoke_id)在rails控制檯中提供了什麼(rails c) –

回答

0
def lighted?(smoke_id) 
    # Return true if User lighted the smoke. 
    smoke = Smoke.find(smoke_id) 
    smoke.lights.collect(&:user_id).include?(self.id) 
end 
0

下面是一個直接的答案一個一個替代方法:

def lighted?(smoke_id) 
    Light.exists?("smoke_id = ? and user_id = ?", smoke_id, self.id) 
end