我正在尝试将我的数据库中的数据与从服务中获取的列表进行比较。我正在使用find_or_initialize_by,因为我想创建项目,如果它不存在和,如果它确实存在,我想在保存之前更新一个值。所以,这是我到目前为止编写的代码块:
linkedin_client.groups.each do |group|
linkedin_group =
linkedin_groups.find_or_initialize_by_group_id(group.id) do |g|
g.group_name = group.group.name
g.membership_state = group.membership_state.code
end # find_or_create
# update membership status in case the group already existed
linkedin_group.membership_state = group.membership_state.code
# persist the group
#linkedin_group.valid? ? linkedin_group.save! : linkedin_group.destroy
linkedin_group.save!
当我运行此操作时,我收到错误Validation failed: Id can't be blank
。我的问题是,如何在初始化中设置主键(即:id)?我是否遗漏了创建该表的迁移内容?
谢谢!
编辑:好的,我弄清楚出了什么问题。我已将validates :id, :presence => true
添加到LinkedinGroup模型中。完成验证,一切顺利。