Ruby on rails 是否有一个与可选的关联:true?

Ruby on rails 是否有一个与可选的关联:true?,ruby-on-rails,activerecord,ruby-on-rails-6,has-one,Ruby On Rails,Activerecord,Ruby On Rails 6,Has One,在一个简单的预订应用程序中: 当用户选择座位时,将创建一个tempaignment 座位付费后,将根据临时约会记录中的信息创建约会 无法首先创建约会记录,因为乘客可能不付款,在这种情况下,TempAppointment保持如中所示,并且永远不会创建关联的约会记录 我的自然想法是临时约会只有一个约会(有效),但是当我添加可选:true,我会看到错误: class-tempaignment

在一个简单的预订应用程序中:

  • 当用户选择座位时,将创建一个
    tempaignment
  • 座位付费后,将根据临时约会记录中的信息创建约会
无法首先创建约会记录,因为乘客可能不付款,在这种情况下,TempAppointment保持如中所示,并且永远不会创建关联的约会记录

我的自然想法是临时约会只有一个约会(有效),但是当我添加
可选:true
,我会看到错误:

class-tempaignment
尝试创建新的临时约会

ta = TempAppointment.new(cruise_id: 1, passenger_id: 1, start_time: start_time, end_time: start_time + 3600)
ArgumentError: Unknown key: :optional. Valid keys are: :class_name, :anonymous_class, :foreign_key,
 :validate, :autosave, :foreign_type, :dependent, :primary_key, :inverse_of, :required, :as, :touch

为什么不能
使用
可选:true

我切换了模型关联,它工作了

好了,这在应用程序的任何地方都没有区别

一些有用的提示

以下是有效的方法:

class Appointment < ApplicationRecord
  has_one :temp_appointment 
end
班级预约
class-tempaignment
在定义了
有一个关系的模型上,我认为您可以使用
required:false
。所以最后,它看起来是这样的:

class Appointment < ApplicationRecord
  has_one :temp_appointment, required: false
end
班级预约
class-tempaignment

它们是您希望使用两个不同的表而不是使用更简单的解决方案(如枚举)的具体原因吗?@max tbh我不知道如何使用枚举进行解决。我考虑了一个更简单的解决方案:在约会中添加一个“付费”(T/F)专栏,甚至没有一个TeMPoPoPoT表。问题是,每个现有的约会查询都必须有一个
。where(paid:t)
,所以我采用了两个表的方法。有什么地方可以让我读一下枚举吗?你必须在属于模型而不是has-one中给出
可选:true
class Appointment < ApplicationRecord
  has_one :temp_appointment, required: false
end
class TempAppointment < ApplicationRecord
  belongs_to :appointment, optional: true 
end