【发布时间】:2017-05-04 12:48:10
【问题描述】:
我无法在 has_one 关系中仅保留一条记录
示例
类别和问题
一个问题belongs_to一个类别,一个类别has_one问题
实际上,在我正在构建的系统中看到,即使存在 has_one 关系,也会出现我有多个问题属于一个类别的情况。
has_one 关系不应该将它们限制为仅一条记录吗?如果没有,那我如何确保我始终保留一份记录?
编辑
请注意,问题模型对类别 ID 有唯一性规则,STILL我发现了多个记录指向相同类别 ID 的案例。
这怎么可能?
编辑 2
模型概述
class Event < ApplicationRecord
has_one :travel_time, :inverse_of => :event, dependent: :destroy
end
class TravelTime < ApplicationRecord
belongs_to :event, :inverse_of => :travel_time
validates_uniqueness_of :event_id, allow_nil: true
end
编辑 3
事件模型中用于保存行程时间记录的方法
def store_travel_times(body)
travel_times = self.build_travel_time
# get travel times
...
if !travel_times.save
logger.error "..."
end
end
用于查找多条记录的查询
2017-05-04T13:39:15.277063 #50567] DEBUG -- : TravelTime Load (0.4ms) SELECT "travel_times".* FROM "travel_times" WHERE "travel_times"."event_id" = $1 [["event_id", 3105]]
【问题讨论】:
-
请分享您的模型、关联和验证。
-
@Md.FarhanMemon 请查看更新后的帖子
-
您在哪里创建列的创建操作?
-
@Md.FarhanMemon 你的意思是迁移文件?
-
你能在你看到多条记录的地方发布一个代码吗?我的意思是代码、查询和输出?
标签: ruby-on-rails activerecord