Rails模型返回nil ID

时间:2012-09-05 11:39:03

标签: ruby-on-rails ruby

我需要获取某个对象的id。这可能是我想念的非常简单的事情。我需要的对象来自数据库,我能够检索其属性而不是id。

Part.where("code ='p8z68vprogen3'").first
# => <Part id: 486, code: "p8z68vprogen3", etc...>


Part.where("code ='p8z68vprogen3'").first.id
# => nil


Part.where("code ='p8z68vprogen3'").first.code
# => "p8z68vprogen3"

这是模型:

class Part < ActiveRecord::Base
  has_many :build_parts
  has_many :builds, :through => :build_parts
  belongs_to :category
  attr_accessible :code,:link,:description,:category_id
end

我想这是与attr_accessibleattr_accessor有关的事情,我试图摆弄它们,但没有任何东西让我寻求帮助。

编辑: 要求重新加载以任何方式返回错误我尝试获取对象(where或find_by _)

part_needed = Part.where("code ='p8z68vprogen3'").first
# => <Part id: 486, code: "p8z68vprogen3", etc..>

part_needed.reload
# ActiveRecord::RecordNotFound: Couldn't find Part without an ID

此外,零件表已经填充,但这里是创建条目的代码:

part = Part.new(
    :description => objs[1],
    :code => objs[2],
    :category_id => tips[objs[3].to_i]
)
part.save!

此代码在代码的另一部分执行不仅仅是在我尝试获取ID之前。

1 个答案:

答案 0 :(得分:1)

重启您的计算机。我知道这听起来不合逻辑。我遇到了一个问题,我有两个相同类的对象,第一个/最后一个方法返回最后一个对象。重启对我有用。 (rails 3.1.1,ruby 1.9.2p320(2012-04-20 revision 35421)[i686-linux]) )