Post
というモデルとCategory
というモデルがあります。 Post
とCategory
の関係は多対多です。ここでActiveRecord:多対多関係を定義するときの非初期化例外例外
create_table :categories_posts do |t|
t.integer :post_id, index: true
t.integer :category_id, index: true
t.timestamps
end
は私のモデルPost
です(ファイル名:post.rb
)
class Post < ApplicationRecord
has_many :categories, :through => :categories_posts
has_many :categories_posts
end
ここでは私のモデルCategoryPost
(ファイル名:category_post.rb
)である
class CategoryPost < ApplicationRecord
self.table_name = "categories_posts"
belongs_to :post
belongs_to :category
end
だから私は、次のような表を結合を作成します
しかし、私が試してみると:Post.last.categories
またはPost.last.categories_posts
私は例外を満たします:
NameError: uninitialized constant Post::CategoriesPost
私が間違っている場所を教えてください。
おかげ
ありがとうございました。できます。私が理解していないことは: 'categories_posts'はレール規約に従うためです。なぜそれは動作しません?ありがとう。 –
join table私も 'categories_posts'を使用します –
@TrầnKimD' 'has_many:through'の3番目のモデルを定義する際には規約はありません。アソシエーションを定義するときは、正しい複数形でなければなりません。あなたはCategoryPost ".pluralize"でコンソールでチェックすることができます – Pavan