【问题标题】:rails - .find returns data from database but missing columnrails - .find 从数据库返回数据但缺少列
【发布时间】:2012-08-30 19:07:54
【问题描述】:

好的,我希望标题足够具有描述性,但这是我的问题。 (我是 Rails 新手,所以如果我还需要更多信息,请告诉我)

我有一个表单来编辑edit.html.erb 上的用户,这会得到一个传递给它的@user 对象。我的控制器上得到这个的代码是:

def edit
    @user = User.find(params[:id])
end

我正在使用该对象来预填充edit.html.erb 页面上的字段。以下是我的数据库中用于用户的列:

id
username
name
email
admin
active
created_at
updated_at

我的问题是,由于某种原因,email 的值被排除在对象之外,因此所有值都向左移动。例如,通过在edit.html.erb 页面上使用<%= @user.inspect %>,这就是我得到的:

<User id: 2, username: "exampleuser1", name: "Kaylee Kuhic", nickname: "exampleuser1", email: "Default", selected_color_scheme: "0", is_admin: true, active: nil, date_last_logged_in: "2012-08-30 19:28:31", created_at: "2012-08-30 19:28:31", updated_at: nil>

这只是我正在修改的一个测试应用程序,所以我可能已经移动了一列。那会影响它吗? 控制器和视图之间发生了什么可能会影响对象?

另外,当我在 rails 控制台中运行 User.find(params[:id]) 时,我得到了正确返回的所有数据:

<User id: 2, username: "exampleuser1", name: "Kaylee Kuhic", nickname: "exampleuser1", email: "exampleuser1@example.com", selected_color_scheme: "Default", is_admin: true, active: true, date_last_logged_in: nil, created_at: "2012-08-30 19:28:31", updated_at: "2012-08-30 19:28:31">

有什么想法吗?再次抱歉,如果我遗漏了任何重要信息。

【问题讨论】:

  • 您是否在相同的环境中运行应用程序和 Rails 控制台?
  • 为什么它们在updated_at 列中有所不同?看起来很腥
  • updated_at, created_at, active 当然email 字段都是不同的。所以看起来你实际上在使用两个不同的数据库。
  • 我更新了两个结果,以便更准确地表示我遇到的问题

标签: mysql ruby-on-rails ruby-on-rails-3 object find


【解决方案1】:

听起来你需要用 rake db:drop db:create db:migrate 重建你的数据库

这将删除数据库中的所有数据,但由于这是一个测试应用程序,我认为没关系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 2023-03-30
    • 2021-07-31
    • 2012-09-27
    • 2019-01-26
    • 1970-01-01
    相关资源
    最近更新 更多