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
类发布出版物
时,项目
模型上的出版物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
作为专栏,也不需要作为属性。另一方面,我不明白为什么在创建项目之前使用而不是在创建项目之后使用会很奇怪。你能解释一下吗?胡说,大便发生在我们所有人身上!试图解释被编辑成答案的尝试。