Ruby on rails rails:在模型之间的关联中使用“self”

Ruby on rails rails:在模型之间的关联中使用“self”,ruby-on-rails,Ruby On Rails,我正在读一本书Rails 3 in Action,它正在构建一个项目管理系统,该系统包含项目,然后与项目关联的票证,用户可以对票证发表评论,当他们发表评论时,他们还可以指出票证的状态new,finished等 用户在提交评论表单时选择票据的状态,并且该状态也必须以某种方式反映在Ticket.rb模型上,因此提交表单后,作者使用回调 after_create :set_ticket_state 在Comment类中,该类还将把状态放在Ticket对象上 我的问题与此回调方法中的代码有关。我理解他

我正在读一本书Rails 3 in Action,它正在构建一个项目管理系统,该系统包含项目,然后与项目关联的票证,用户可以对票证发表评论,当他们发表评论时,他们还可以指出票证的状态new,finished等

用户在提交评论表单时选择票据的状态,并且该状态也必须以某种方式反映在Ticket.rb模型上,因此提交表单后,作者使用回调

after_create :set_ticket_state
在Comment类中,该类还将把状态放在Ticket对象上

我的问题与此回调方法中的代码有关。我理解他为什么写信

self.state
自我引用评论类,但我不明白他为什么使用

self.ticket.state
如果他试图更新Ticket对象,as self仍然会引用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

注释所属的状态和票据所属的状态是数据库中两个独立的对象或行。这行代码的目的是引用票据的状态,并相应地更新票据的状态。如果您只是使用self.state,那么您只是在更改注释的状态。

也许我不明白。我真正想问的是,在评论课上,他是如何使用self引用Ticket对象的。我认为self总是引用引用它的类,但是如果他需要更新Ticket对象,那么他不需要以某种方式使用Ticket吗?self是一个注释,self.Ticket是它的Ticket,所以self.Ticket.state是注释的Ticket的状态。谢谢,所以这只可能是因为属于:Ticket,对吗?是的,没错。方法调用创建注释对象要使用的方法。