2

特定のオブジェクトの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_accessibleまたはに関連するものだと思いattr_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を取得しようとする直前ではありません。

4

1 に答える 1

1

マシンを再起動します。私はそれが論理的に聞こえないことを知っています。同じクラスの2つのオブジェクトがあり、最初/最後のメソッドが最後のオブジェクトを返すという問題が発生しました。再起動は私のために働いた。(rails 3.1.1、ruby 1.9.2p320(2012-04-20リビジョン35421)[i686-linux]))

于 2012-09-05T13:11:49.723 に答える