find_or_initialize_by未设置主键(:id)

时间:2012-03-20 15:48:50

标签: ruby-on-rails validation primary-key

我正在尝试将我的数据库中的数据与从服务中获取的列表进行比较。我正在使用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模型中。完成验证,一切顺利。

0 个答案:

没有答案