首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免在ActiveRecord中存储重复的字符串

避免在ActiveRecord中存储重复的字符串
EN

Stack Overflow用户
提问于 2013-02-09 11:18:54
回答 1查看 50关注 0票数 0

假设我有以下模型:

代码语言:javascript
复制
    class Event < ActiveRecord::Base
      has_many :tips
    end

    class Tip < ActiveRecord::Base
    end

提示描述只是MySQL数据库中的一个VARCHAR(140),它们中的大多数都是预设值,比如“穿雨衣”或“带上支票簿”。我想使用规范化来避免存储大量具有相同值的字符串,但是,如果我将belongs_to :event添加到Tip模型中,event_id值将导致许多重复的提示。

如何在不手动管理tip_id <---> tip_description映射的情况下获得规范化的好处?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-09 12:16:39

如果您希望避免表中的重复条目,请使用has_and_belongs_to_many

代码语言:javascript
复制
class Event < ActiveRecord::Base
  has_and_belongs_to_many :tips
end

class Tip < ActiveRecord::Base
  has_and_belongs_to_many :events
end

迁移到创建events_tips

代码语言:javascript
复制
class CreateEventsTips < ActiveRecord::Migration
  def change
    create_table :events_tips, :id => false do |t|
      t.integer :event_id
      t.integer :tip_id
    end
  end
end

在控制器中:

代码语言:javascript
复制
tip = Tip.find_or_create_by_tip_description(params[:tip][:description])
Event.find_by_id(params[:id]).tips << tip
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14784580

复制
相关文章

相似问题

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