无法弄清楚两个模型之间的关系

时间:2016-09-06 10:06:55

标签: ruby-on-rails

我正在编写一个CMS插件,其中我有两个基本模型 - print("hello")Category。每个模型都与另一个Entry关系相关。但我无法弄清楚,我应该如何在他们的控制器和路线中指出这一点。例如,我需要在has_and_belongs_to_many操作中呈现属于特定类别的所有条目。 以下是模型:

categories#show

这是我的class Entry < ApplicationRecord has_and_belongs_to_many :categories end class Category < ApplicationRecord has_and_belongs_to_many :entries end

categories_controller

并在我的def show @category = Category.find(params[:id]) @entries = @category.entries.all end 模板中:

show.html.erb

和我的路线:

<% @entries.each do |entry| %>
  <%= link_to entry.title, entry_path(entry) %>
<% end %>

但是每次收到错误时,数据库中都没有resources :categories do scope '/:content_class' do resources :entries end end 关系。我做错了什么?

这是link to the whole project

2 个答案:

答案 0 :(得分:1)

在我查看您提供的github存储库之后,我认为您需要有一个交叉引用表来使关联工作。

这样做的原因是应该有一种方法来区分一个表的哪些记录与另一个表中的哪一个具有连接。对于one-to-manyhas_one这样的belongs_to关系,可以通过在其他模型的表格中记录其中一个模型的id来实现。由于您需要在两个表中的每个记录中记录多个id,因此只能使用单独的表格。

尝试仅使用两个字段制作此类表格:category_identry_id,其迁移类似于此代码段:

class CreateCategoryEntryJoinTable < ActiveRecord::Migration
  def change
    create_table :categories_entries, id: false do |t|
      t.integer :category_id
      t.integer :entry_id
    end
  end
end

您可以在此处阅读更多内容:http://apidock.com/rails/v4.2.1/ActiveRecord/Associations/ClassMethods/has_and_belongs_to_many

答案 1 :(得分:0)

has_and_belongs_to_many关联需要您尚未创建的连接表。有关详细信息,请参阅error in username