【问题标题】:Using has_many through associations in Rails 4在 Rails 4 中通过关联使用 has_many
【发布时间】:2015-03-22 11:14:53
【问题描述】:

我试图在我的 Rails 4 应用程序中创建一些简单的关系。我有三个模型:userlistword

这是一个简单的“列表”应用程序,每个用户通过列表有_many 个单词。

我目前有以下关联...

用户模型:

class User < ActiveRecord::Base
    has_many :words through :lists
end

列表模型:

class List < ActiveRecord::Base
    has_many :words
    belongs_to :user
end

词模型:

class Word < ActiveRecord::Base
    belongs_to :list
end

我不确定如何通过控制台创建关系。比如……

>   user = User.create(name: "Kyle")
>   list = List.create(name: "List One")
>   word = Word.create(word: "StackOverflow")
>
>   list.push(word)     # add word to list
>   user.push(list)     # add list to user

有人可以举例说明如何正确创建这些关联。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    用户模型

    class User < ActiveRecord::Base
      has_many :lists
      has_many :words, through: :lists
    end
    

    列表模型

    class List < ActiveRecord::Base
      has_many :words
      belongs_to :user
    end
    

    词模型

    class Word < ActiveRecord::Base
      belongs_to :list
    end
    

    创建对象:

    > user = User.create(name: "Kyle")
    > list = List.create(name: "List One")
    > word = Word.create(word: "StackOverflow")
    
    # Add word to a list
    > list.words << word
    > list.words.create(word: "LinkedIn") # Add a newly created word directly
    > list.words << Word.find(params[:word_id]) # Add an existing word after finding it by its id
    
    # Associate a list to a user
    > user.lists << list
    

    【讨论】:

    • 请参考guides.rubyonrails.org/…的文档
    • 使用 Rails 4.2 - 这给出了一个错误:ActiveModel::MissingAttributeError: can't write unknown attribute list_id
    • 另外,请注意我在User 模型中添加的`has_many :lists`。
    猜你喜欢
    • 2013-05-06
    • 2015-11-16
    • 2014-12-16
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 2017-04-23
    相关资源
    最近更新 更多