Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Activerecord Rails-属于不更新外键的关联_Activerecord_Associations_Ruby On Rails 3.2 - Fatal编程技术网

Activerecord Rails-属于不更新外键的关联

Activerecord Rails-属于不更新外键的关联,activerecord,associations,ruby-on-rails-3.2,Activerecord,Associations,Ruby On Rails 3.2,我有以下资料: 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_

我有以下资料:

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
类发布:publication 创建前:绑定项目 私有的 def bind_项目 self.create\u项目 结束 结束 类项目:project 结束 根据创建新的
出版物
时,
项目
模型上的
出版物id
属性应通过
创建项目
方法设置

为什么它没有发生

这是我在bind_项目上看到的:

  • self.project\u id
    设置正确
  • self.project.publication\u id
    NULL
  • self.project.publication.id
    设置正确

数据库也反映了这一点:
projects.publication\u id
列为
NULL

似乎有点奇怪,在创建
回调之前,您尝试在
中访问
create\u project
方法。打字错误创建后的
回调似乎更合适

此外:您需要关联的
has\u one
侧的
publication\u id
属性做什么?在
所属
侧只需要有一个
\u id
属性


我的第一段的附录:在我看来,在实际的基本对象创建完成之前,您正试图在相关对象(
create\u project
方法)上使用Rails magic。虽然这可能有效,但这将是我要调查的第一点。

项目根本不应该有出版物id,我对我的问题感到非常羞愧。正如你和张弗雷德里克所说,我不需要
publication\u id
作为专栏,也不需要作为属性。另一方面,我不明白为什么在创建项目之前使用
而不是在创建项目之后使用
会很奇怪。你能解释一下吗?胡说,大便发生在我们所有人身上!试图解释被编辑成答案的尝试。