【发布时间】:2014-05-28 02:40:49
【问题描述】:
基本上我需要在 after_save: :create ward 之后创建一个关联
Location.rb
after_save :createward
def createward
w = Ward.find_by_name(self.city)
if w.nil?
c = self.create_ward({:name => self.city})
self.ward_id = c.id #this line should be delayed because - c.id is called to soon.
else
self.ward_id = w.id
end
end
这种工作,大多数时候它会创建或关联记录,但有时 c.id 会为零,因为 self.ward_id = c.id 行是在创建新病房之前执行的,因此 self.ward_id 通常是无;/ 如何解决这个问题的任何想法都会有所帮助:)
【问题讨论】:
-
c.id 为 nil 可能比其他任何事情都更能说明您的创建失败。你有验证或任何会导致 create_ward 失败的东西吗?我假设 ward 是 has_one 关系
-
我认为如果您提供连接
Ward和Location的代码会非常有帮助。
标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 rails-models