Rails 控制台添加 nil 而不是值

2024-02-13

目前,当尝试通过 Rails 控制台或种子数据将新用户添加到我的用户表时,一切都为零。

在我的种子文件中,我正在运行:

u1 = User.create(:from_email => "[email protected] /cdn-cgi/l/email-protection", :to_email => "[email protected] /cdn-cgi/l/email-protection", :from_name=>"Vero", :to_name=>"Spencer", :message=>"Test message", :password=>"chicken", :id => 1)
u1.save!

如果我通过 Rails 中的种子数据或通过 Rails 控制台运行此命令,然后使用 User.all 检查 Postgres 数据库,我会得到:

#<User id: 1, from_name: nil, to_name: nil, from_email: nil, to_email: nil, message: nil, created_at: "2014-12-10 02:34:02", updated_at: "2014-12-10 02:34:02", password: nil>

我已经处理这个问题几个小时了,开始变得很困惑。我将不胜感激,我的模型和架​​构如下:

class User < ActiveRecord::Base
attr_accessor :from_name, :from_email, :to_name, :to_email, :message, :password, :id

before_save { self.from_email = from_email.downcase }
before_save { self.to_email = to_email.downcase }
before_save { self.password = "merrychristmas#{ Random.rand(1000) }" }

validates :id, :presence => true, :uniqueness => true
validates :from_name, :presence => true, :uniqueness => false
validates :to_name, presence: true, :uniqueness => false
validates :from_email, presence: true, format: { with: /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i}
validates :to_email, presence: true, format: { with: /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i }
validates :message, presence: true, length: { maximum: 50 }

def self.authenticate(id, password)
    user = find(id)
if user && user.password
        user
else
        nil
end
end

end

Schema:

ActiveRecord::Schema.define(version: 20141209104326) do

  # These are extensions that must be enabled in order to support this database
  enable_extension "plpgsql"

  create_table "users", force: true do |t|
    t.string   "from_name"
    t.string   "to_name"
    t.string   "from_email"
    t.string   "to_email"
    t.text     "message"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "password"
  end

end

SQL

(0.3ms)  BEGIN
  User Exists (0.5ms)  SELECT  1 AS one FROM "users"  WHERE "users"."id" = 2 LIMIT 1
  SQL (0.4ms)  INSERT INTO "users" ("created_at", "updated_at") VALUES ($1, $2) RETURNING "id"  [["created_at", "2014-12-10 04:15:33.579478"], ["updated_at", "2014-12-10 04:15:33.579478"]]
   (6.5ms)  COMMIT
=> #<User id: nil, from_name: nil, to_name: nil, from_email: nil, to_email: nil, message: nil, created_at: "2014-12-10 04:15:33", updated_at: "2014-12-10 04:15:33", password: nil>

你的问题是使用attr_accessor在你的模型中。仅当您想要为不想存储在数据库中的对象定义 getter/setter 方法时,才应使用此方法。See here https://stackoverflow.com/questions/2793098/usage-of-attr-accessor-in-rails了解更多信息。

删除整个开头的行attr_accessor你的代码将会工作。

同时删除分配id以及验证其存在的行。这是由数据库自动处理的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 控制台添加 nil 而不是值 的相关文章

随机推荐

  • 我需要让我的网站适合屏幕

    我已经将我的网站创建为固定布局 宽度为 1600px 但较小分辨率下的网页看起来太大了 我应该怎么做才能让它在每个分辨率下看起来都很好 感谢帮助 使用相对措施 例如width 100 您可以通过使用来进一步限制这一点min width an
  • Android:将彩色图像转换为灰度图像[重复]

    这个问题在这里已经有答案了 我正在尝试使用红色 绿色 蓝色的平均值将彩色图像转换为灰度图像 但它出现错误 这是我的代码 imgWidth myBitmap getWidth imgHeight myBitmap getHeight for
  • window.open target _self v window.location.href?

    我需要使用 JavaScript 重定向用户 哪种方法是首选方法 window open webpage htm self or window location href webpage htm 当然 第二种方法是首选 因为您没有另一个函数
  • 如何在 jQuery 中获取屏幕上可见的元素对象? [复制]

    这个问题在这里已经有答案了 我在 DOM 中有一个对象列表 它比屏幕高度区域长 我需要检测屏幕上的可见对象 只是为了制作类似时间线树视图的东西 如下图所示 我的 DOM 看起来像这样 div div Lorem ipsum div div
  • 如何在没有 MANIFEST.MF 的情况下运行 Java .jar?

    是否可以运行不包含的Java应用程序MANIFEST MF文件 当然还有静电main方法 只是缺少清单文件 并且该应用程序依赖于几个外部 jar files 如果这可能的话 该怎么做 您可以指定要从命令行运行的类 java cp yourJ
  • Numpy 数组切片返回切片数组和相应的数组索引

    我正在尝试从一个数组生成两个 numpy 数组 一个是原始数组的切片 另一个表示可用于查找生成的值的索引 我可以解释这一点的最好方法是通过示例 import numpy as np original np array 5 3 7 3 2 8
  • PostgreSQL:文本到 JSONB - 总大小超过最大值

    我已在文本字段中导入 JSON 数组 并希望将其转换为 JSONB 我收到以下错误 SQL错误 54000 错误 jsonb数组元素的总大小超过最大值268435455字节 错误 jsonb 数组元素的总大小超过最大值 268435455
  • 激活负颜色后图形奇怪地滑动

    我正在使用 Highcharts 在移动图表中显示一些实时变化的数据 每秒添加一个点 就像更新 highcharts 网站上的样条线示例 http www highcharts com demo dynamic update 为了清楚地看到
  • mysql 使用 unix_timestamp 变量进行分区

    鉴于这种 delimiter create procedure setup begin declare d datetime set d rounddate now create table s time req id int not nu
  • Django 比较模型实例是否相等

    据我所知 在单例情况下 您可以执行以下操作 spam eggs and if spam and eggs是具有所有相同属性值的同一类的实例 它将返回True 在 Django 模型中 这是很自然的 因为模型的两个单独实例永远不会相同 除非它
  • char** 与 char* c[] 访问字符串数组

    为什么我不能将 char 指向 C 字符串数组 int main int argc char argv char c1 Hey Hello printf s c1 1 works fine vs int main int argc char
  • 使用 PHP SplFileObject 和 READ_CSV 标志时如何删除多余的行?

    使用 PHP 迭代 csv 文件时Spl文件对象 http php net manual en class splfileobject php和READ CSV标记我得到一个额外的行null价值 有没有办法自动删除这一行 file new
  • 如何在作业后脚本中使用 JUnit XML 格式获取 Jenkins 中运行的测试数量?

    有没有什么方法可以获取 Jenkins 在 Post Job 脚本中执行 或通过 的测试数量 例如 将此号码发送到 Github Status API 我没有看到任何方法可以直接访问这些号码Publish JUnit test result
  • 如何在MySQL中实现多对多的层次结构

    这是我的问题的后续内容 如何在MySQL中记录记录的顺序集合 https stackoverflow com questions 9610942 how to record sequential collections of records
  • Android ListView 禁用标题视图上的点击和上下文菜单?

    我使用设置标题视图getListView addHeaderView view 目前 在点击和上下文菜单方面 它的处理方式与所有其他列表行相同 如何使标题视图更像标题 或者 我怎样才能在上面添加一些内容ListView这不属于ListVie
  • 没有 scipy 的 numpy 中的批量卷积 2d?

    我有一批b m x n图像存储在数组中x 和一个卷积滤波器f大小的p x q我想应用于每个图像 然后使用总和池并存储在数组中y 在批次中 即all np allclose y i j k x i j j p k k q f sum for
  • 插入新实例时不执行实体框架核心延迟加载

    我有两节课 Campaign它引用了一个类客户 public class Campaign Key Required public int id get set public int CustomerId get set ForeignKe
  • 碰撞时阻止移动

    我正在 XNA 中开发 2d 游戏 目前正在上物理课 我当前的任务是在一个物体与另一个物体碰撞时阻止它 我让我的游戏在两个物体发生碰撞时调用此函数 public void BlockMovement gameObject target yo
  • 单击日历时使用 fullcalendar 创建事件(rails)

    当用户单击日历的任何部分时 如何创建事件 然后将其作为新事件存储在数据库中 我知道你必须使用 select function start end allDay 来获取 开始 和 结束 时间 但是当我得到这些数据后 如何将其传递到数据库呢 T
  • Rails 控制台添加 nil 而不是值

    目前 当尝试通过 Rails 控制台或种子数据将新用户添加到我的用户表时 一切都为零 在我的种子文件中 我正在运行 u1 User create from email gt email protected cdn cgi l email p