Rails 4嵌套资源创建新记录undefined方法create_association

时间:2016-01-03 01:27:56

标签: ruby-on-rails associations nested-resources

  对于#<

未定义的方法`create_school'用户:0xb4e407a0>

这是我的创建动作

@school = current_user.create_school(school_params)

在我的模型定义中

user has_one profile
profile has_many schools

2 个答案:

答案 0 :(得分:1)

userschool之间没有任何关系。

如果user有多个schools,那么您可以使用

创建关联实例
 current_user.schools.create(school_params)

如果user有一个school,那么您使用create_association

 current_user.create_school(school_params)

答案 1 :(得分:0)

根据经验,无论何时在模型上运行关联方法(通常为buildcreate),方法的名称取决于多个关联...复数关联需要association.create,单数关联需要create_association

belongs_to ref(特别是关于create_):

  

当您声明belongs_to关联时,声明类   自动获得与协会相关的五种方法:

     
      
  • association(force_reload = false)
  •   
  • 关联=(准)
  •   
  • build_association(attributes = {})
  •   
  • create_association(attributes = {})
  •   
  • create_association!(attributes = {})
  •   

-

has_many ref(特别是关于.create):

  

当您声明has_many关联时,声明类   自动获得与该关联相关的16种方法:

     
      
  • collection(force_reload = false)
  •   
  • ...
  •   
  • collection.build({})
  •   
  • collection.create(attributes = {})
  •   
  • collection.create!(attributes = {})
  •   

因此,如果您使用has_many关联,则需要使用x.create

@school = current_user.schools.create school_params