sql – 在ActiveRecord中创建if不存在的函数?

我正在使用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吗?我只是放弃了结果,所以即便这样也不那么优雅.

解决方法

在这里.

Rails 3

user_level_status = UserLevelStatus.find_or_create_by_user_id_and_level_id(user_id,level_id)

导轨4:

user_level_status = UserLevelStatus.find_or_create_by(user_id: user_id,level_id: level_id)

你应该设置default status in your model.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...