我对has_many有一点问题,我不知道我错了,在这里搜索还没有给我答案。
我正在编写一个小型应用程序来管理各方。因此,有一个模范人为在党帮助的人
class Person < ActiveRecord::Base
has_many :sections
end
一个模型部分来管理不同的地方(一个射击栏,一个获取食物的地方等)
class Section < ActiveRecord::Base
belongs_to :person
has_many :shifts
end
我使用的路线很简单(他们工作)
resources :people
resources :sections
我的迁移如下
class CreatePeople < ActiveRecord::Migration
def change
create_table :people do |t|
t.string :vname
t.string :nname
t.string :mail
t.timestamps
end
end
end
和
class CreateSections < ActiveRecord::Migration
def change
create_table :sections do |t|
t.string :name
t.text :text
t.integer :person_id
t.timestamps
end
end
end
我遇到的问题是:据我所知,has_many我现在应该可以使用
了@stuff=Person.sections
获取某个人工作的所有部分。
然而,这给了我“未定义的方法`部分'用于#”。当我摧毁一个人并且部分对象中的外键仍然存在时,问题实际上发生了,而我认为rails会将它们设置为NULL,例如。
@person=Person.find(8)
@person.destroy
在
的某个地方结束了couldn't find person with id=8
获取部分
的节目动作def show
@section=Section.find(params[:id])
if @section.person_id
@person=Person.find(@section.person_id)
end
end
我不知道该怎么办,或者我错过了一些迁移。 Rails似乎并不承认这种一对多的关系。我已经检查了文档和东西,但找不到区别。也许你可以帮忙。
非常感谢,sven
答案 0 :(得分:2)
您可以添加依赖关系规则,例如:
class Person < ActiveRecord::Base
has_many :sections, dependent: :destroy
...
这将在人员摧毁之前摧毁人物部分。
看起来像你需要:
class Person < ActiveRecord::Base
has_many :sections, dependent: :nullify