我正在使用Rails 3.2.8。如果状态记录尚不存在,则需要创建一个状态记录。如果状态记录存在,我什么也不做。所以我的代码是这样的:
user_level_status = UserLevelStatus.where(user_id: user_id, level_id: level_id).first
if !user_level_status
UserLevelStatus.create(user_id: user_id, level_id: level_id, status: UserLevelStatus::READY)
end
在Rails/ActiveRecord中是否有更好的方法来处理此问题?有与
find_or_create_by_
等效的机制吗?我可以使用find_or_create_by_user_id
并检查level_id
吗?我只是舍弃结果,所以即使那样也不是很优雅。 最佳答案
就在这里。
滑轨3
user_level_status = UserLevelStatus.find_or_create_by_user_id_and_level_id(user_id, level_id)
Rails 4:
user_level_status = UserLevelStatus.find_or_create_by(user_id: user_id, level_id: level_id)
然后您应该设置default
status
in your model。