【问题标题】:Rails Arrays and MysqlRails 数组和 Mysql
【发布时间】:2015-02-24 00:05:47
【问题描述】:

我的用户拥有一个或多个电子邮件地址,但我不想为电子邮件创建新表。想法是将电子邮件地址存储为数组,但我如何在控制器和模型中实现这一点? 这是控制器

class UsersController < ApplicationController
def update
@user =User.find(params[:id])

if @user.update_attributes(user_params)
  redirect_to :action => 'show', :id => @user

是否可以在更新期间检查电子邮件参数是否已经存在或新的,如果它是新的,请将其添加到数组中? 我不知道我是否说清楚了,但无论如何感谢您提供的任何答案或建议! 顺便说一句,我用的是mysql,不能换别的!

【问题讨论】:

    标签: mysql ruby-on-rails arrays


    【解决方案1】:

    您可以将其存储为逗号分隔的列表。

    或使用rails serialize 来完成这项工作

    例如,

    class User < ActiveRecord::Base 
        serialize :emails, Array 
    end
    

    在作为 user.emails 检索时将保持数组格式。 您始终可以验证电子邮件是否存在于数组中。

    但我的建议是有一个单独的模型。未来可能会有一些新功能,比如分配主要和次要电子邮件等等。那么这个设计就不会那么有用了

    【讨论】:

    • P.S - 任何类类型都可以传递给 serialize 指令。 Array、Hash、JSON 也可能是另一个 activerecord
    • 非常感谢!我实际上正在使用 active_model_serializer 将数据呈现为 Ember 客户端的 Json。你认为我可以通过 active_model_serializer 做同样的事情吗?再次感谢您的回答!
    • 从我从railscasts.com/episodes/409-active-model-serializers 中读到的关于 active_model_serializer 的内容看来,它似乎更像是一个代表性实用程序(将 ActiveRecord 转换为 json 并因此创建一个 API)。但在这里,我们的目标是以序列化的方式存储对象。我认为这不会达到目的。想要对所有人使用一个修复程序是可以理解的 :) 去过那里! P.S - rails serialize 已经是 rails 的一部分,因此您不必觉得使用不需要的额外 gem 或其他东西。它在那里供我们开发人员利用。
    • 非常感谢我的朋友!你一直很有帮助!我会听从你的建议,最终我会让你知道结果!祝你有美好的一天!
    • 这个答案解决了我们的问题,但是我们如何查询数组项。在这个例子中(电子邮件):假设我们有 ['email1@blah.com','email2@mail.com']。我们如何查询拥有“email1@blah.com”的用户?我们如何查询拥有“blah.com”电子邮件的用户?
    猜你喜欢
    • 2011-07-12
    • 2011-07-26
    • 1970-01-01
    • 2011-04-08
    • 2013-09-27
    • 2018-04-20
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    相关资源
    最近更新 更多