提问人:wachichornia 提问时间:6/2/2022 更新时间:6/2/2022 访问量:28
Rails:预期的记录,在回调上关联记录时after_create false
Rails: record expected, got false when associating record on after_create callback
问:
我在预订模型上有以下内容
belongs_to :tour, optional: true
after_create_commit :add_to_tour
def add_to_tour
tour = Tour.where(experience: experience, time: time).first_or_create
tour.bookings <<! self
end
(在调试中添加了 bangs)。然后我在方法上有这段代码:
booking = Booking.home_guide.where(pipedrive_deal_id: params['id']).first_or_initialize
if booking.update!(
some params
)
此代码失败,并出现以下错误
ActiveRecord::AssociationTypeMismatch (Booking(#71120) expected, got false which is an instance of FalseClass(#5700))
booking在db上提交,否则回调不会触发。为什么我得到假?我必须以某种方式重新加载预订吗?
谢谢
答:
2赞
mechnicov
6/2/2022
#1
array = []
array <<! 'Some object'
# => [false]
因为
!'Some object'
# => false
!
不是调试。它是“非”运算符
评论
0赞
spickermann
6/2/2022
其他上下文:同时存在方法和方法,如果更新不成功,则带有方法的方法将引发异常。但只有.命名的方法根本没有在 ActiveRecord 关联上定义,而是 Ruby 将其解释为update
update!
!
<<
<<!
tour.bookings << !self
0赞
wachichornia
6/2/2022
明白了。那是我的错。
评论