首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能建立多到多的关系

不能建立多到多的关系
EN

Stack Overflow用户
提问于 2018-02-01 13:19:11
回答 1查看 82关注 0票数 0

我不能在ruby on rails中创建多到多的关系。当我试图保存一个新的词汇表时,我总是会遇到一个错误。

“词汇类别无效”

这是我的密码:

代码语言:javascript
复制
def create(glossary_params)
  Glossary.transaction do
       @glossary = Glossary.new(name: glossary_params[:name],
                   identifier: glossary_params[:identifier],
                   description: glossary_params[:description],
                   private_glossary: glossary_params[:private_glossary])

      glossary_params[:categories_id].each do |c|
         @glossary.glossary_categories.build(category: Category.find_by_id(c), user: @user)
     end
  end
  @glossary
end

这是我的词汇模型:

代码语言:javascript
复制
class Glossary < ApplicationRecord
  validates :name, presence: :true, uniqueness: { case_sensitive: false }
  validates :identifier, presence: :true, uniqueness: { case_sensitive: false }

  has_many :glossary_categories
  has_many :categories, through: :glossary_categories
end

这是我的分类模型:

代码语言:javascript
复制
class Category < ApplicationRecord
   has_many :glossary_categories
   has_many :glossaries, through: :glossary_categories
end

这是我的GlossaryCategory模型:

代码语言:javascript
复制
class GlossaryCategory < ApplicationRecord
   belongs_to :glossary
   belongs_to :category
   belongs_to :user
end

这是我的glossary_category表:

代码语言:javascript
复制
create_table :glossary_categories do |t|
  t.belongs_to :glossary, index: true
  t.belongs_to :category, index: true
  t.integer :user_id
  t.timestamps
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-03 12:40:13

我的创建方法的解决方案是:

代码语言:javascript
复制
def create(glossary_params)
   Glossary.transaction do
      @glossary = Glossary.create(name: glossary_params[:name],
                   identifier: glossary_params[:identifier],
                   description: glossary_params[:description],
                   private_glossary: glossary_params[:private_glossary])

      if @glossary.valid?
         if glossary_params[:categories_id].present?
            glossary_params[:categories_id].each do |c|
                @glossary.glossary_categories.create(category: Category.find_by_id(c), user: @user)
            end
         end
      end
   end
   @glossary
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48563752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档