Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 修改关联模型的Activerecord回调_Ruby On Rails_Ruby On Rails 3_Activerecord - Fatal编程技术网

Ruby on rails 修改关联模型的Activerecord回调

Ruby on rails 修改关联模型的Activerecord回调,ruby-on-rails,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby On Rails 3,Activerecord,我有两个有关联的模型。我想先在一个模型中设置保存,然后再修改另一个模型。以下是我所拥有的: class Event < ActiveRecord::Base belongs_to :leads end class Lead < ActiveRecord::Base before_save :update_event has_many :events, :dependent => :destroy accepts_nested_attributes_for :

我有两个有关联的模型。我想先在一个模型中设置保存,然后再修改另一个模型。以下是我所拥有的:

class Event < ActiveRecord::Base
  belongs_to :leads
end

class Lead < ActiveRecord::Base
  before_save  :update_event
  has_many :events, :dependent => :destroy
  accepts_nested_attributes_for :events, :reject_if => lambda { |a| a[:title].blank? }

  def update_event
    self.events.title = "Testing to set the event title"
  end
end
我得到的错误如下:

undefined method `title=' for #<ActiveRecord::Relation:0x007fed3229d610>
的未定义方法'title='#
我显然做错了。如果有任何帮助,我将不胜感激。我仍在寻找解决方案,如果我找到了,我会自己更新


谢谢大家!

每个潜在客户都有多个活动。因此,在您的情况下,您希望:

before_save  :update_events

def update_events
  events.each do |event|
    event.title = "Testing to set the event title"
  end
end

如何修改该代码,使其仅更改当前事件。每个Lead都有许多事件,上面的代码更改了所有事件的标题,而不是刚刚添加的新事件。好的,我将代码更改为self.events.last.title=“Testing to set the event title”,这对我很有用。除非你能想出更好的办法。
before_save  :update_events

def update_events
  events.each do |event|
    event.title = "Testing to set the event title"
  end
end