0
我正在閱讀一本書(Rails 3 in Action),它構建了一個項目管理系統,其中包含項目,然後是與項目相關的票證,用戶可以對票據進行評論,並且當他們發表評論時,他們還可以指示機票的狀態(新的,完成的等)。rails:在模型之間的關聯中使用「self」
的用戶選擇票的狀態,而提交評論的形式,並且該國以某種方式也可以在Ticket.rb模型反映,所以在表單提交後,筆者使用了回調
after_create :set_ticket_state
在評論類,這也將把狀態的票證對象
我的問題涉及到這個回調方法中的代碼。我明白他爲什麼寫
self.state
與「自我」指的是評論類,但我不明白爲什麼他使用
self.ticket.state
如果他試圖更新票據對象,如「自我「仍然會引用Comment類。
我猜測,他能做到這樣,因爲聯想
belongs_to :ticket
,但是這只是一個猜測,如果可能的話,我想一些更多的解釋。
class Comment < ActiveRecord::Base
after_create :set_ticket_state
belongs_to :ticket
belongs_to :user
belongs_to :state
validates :text, :presence => true
delegate :project, :to => :ticket
private
def set_ticket_state
self.ticket.state = self.state
self.ticket.save!
end
end
也許我不明白。我真正要問的是,在Comment類中,他能夠使用「self」來引用Ticket對象。我認爲「自我」總是指代被引用的類,但是如果他需要更新Ticket對象,那麼他是不是必須以某種方式使用Ticket? – Leahcim
'self'是一個Comment,'self.ticket'是它的Ticket,所以'self.ticket.state'是Comment的Ticket的狀態。 – rkb
謝謝,所以這是唯一可能的,因爲belongs_to:ticket,對吧? – Leahcim