【问题标题】:Rails 4 nested resources Creating new records undefined method create_associationRails 4嵌套资源创建新记录未定义方法create_association
【发布时间】:2016-01-03 01:27:55
【问题描述】:

#

这是我的创建操作

@school = current_user.create_school(school_params)

在我的模型定义中

user has_one profile
profile has_many schools

【问题讨论】:

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


    【解决方案1】:

    userschool 之间没有关系。

    如果user 有多个schools,那么您可以使用以下方法创建关联实例

     current_user.schools.create(school_params)
    

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

     current_user.create_school(school_params)
    

    【讨论】:

      【解决方案2】:

      根据经验,每当您在模型上运行关联方法时(通常是 buildcreate),方法的名称取决于关联的复数...复数关联需要 @987654327 @,单数关联需要create_association

      belongs_to ref(特别是关于create_):

      当你声明一个 belongs_to 关联时,声明类 自动获取关联相关的五个方法:

      • 关联(force_reload = false)
      • association=(关联)
      • build_association(属性 = {})
      • create_association(属性 = {})
      • create_association!(属性 = {})

      --

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

      当你声明一个 has_many 关联时,声明类 自动获取关联相关的16个方法:

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

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

      @school = current_user.schools.create school_params
      

      【讨论】:

        猜你喜欢
        • 2016-05-02
        • 1970-01-01
        • 1970-01-01
        • 2014-08-26
        • 2014-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多