0

私は次のものを持っています:

class Publication < ActiveRecord::Base
  belongs_to :project, :inverse_of => :publication

  before_create :bind_project

  private
    def bind_project
      self.create_project
    end
end

class Project < ActiveRecord::Base
  has_one :publication, :inverse_of => :project
end

これによると、新しいモデルを作成するときは、メソッドによってモデルPublicationpublication_id属性を設定する必要があります。projectcreate_project

なぜそれが起こらないのですか?

これは私が見ているものですbind_project

  • self.project_id正しく設定されている
  • self.project.publication_idNULL
  • self.project.publication.id正しく設定されている

データベースもこれを反映しています。projects.publication_id列はNULLです。

4

1 に答える 1

1

create_projectコールバックでメソッドにアクセスしようとするのは少し奇妙に思えbefore_createます。打ち間違え?コールバックのafter_create方が適切なようです。

さらに:アソシエーション側のpublication_id属性は何のために必要ですか? 側面には 1 つの属性has_oneのみが必要です。_idbelongs_to

私の最初の段落への補遺: 私が見たようcreate_projectに、実際の基本オブジェクトの作成が完了する前に、関連付けられたオブジェクト (メソッド) で Rails マジックを使用しようとしています。これはうまくいくかもしれませんが、これが私の最初の調査ポイントです。

于 2012-09-20T19:19:31.250 に答える