2011-01-31 74 views
0

假設我有員工,經理和公司的類。這些從ActiveRecord繼承,並且如您所期望的那樣全部關聯。訪問鏈中的以前方法(Ruby(on Rails))

我有兩個Employee類的實例,bobjane。他們都爲同一家公司工作,但擁有不同的經理。

我希望能夠撥打bob.company.xjane.company.x並獲得不同的結果,因爲雖然他們爲同一家公司工作,但他們有不同的經理。還有其他一些限制使我不能將x定義爲僱員的一種方法,並呼籲bob.company_x,我認爲在這個例子中會更簡單。

有沒有什麼辦法可以在我的x方法定義中知道哪個員工啓動了這個方法鏈?

回答

2

你提出的建議不能以簡單幹淨的方式完成,除此之外,這是違反直覺的。

class Employee 
    belongs_to :company 
    belongs_to :manager 
end 

是唯一干淨的解決方案。這有清楚界定的關係。這些關係無論如何都需要提供:您如何知道bob的經理是哪位?

一個解決方案,爲你建議,在那裏你可以寫bob.company.my_manager沒有意義,因爲bob.company是他的公司,並在該水平(Company)不存在bob更多的知識。

爲了完整起見:實際上是一個經理是員工本身,所以我們會寫這種關係有點不同:

class Employee 
    belongs_to :manager, :class => Employee 
end 

(和你的employees表,則需要添加一個字段manager_id)。

希望這會有所幫助。

+0

我的問題不是關於如何設置關聯。情況是設法得到在我的觀點是否一種方法是否意識到它被稱爲的範圍,以便x知道它是通過bob調用,而不是通過簡稱bob.company.x – muirbot 2011-02-01 00:13:17