【问题标题】:manually adding an integer field to rails scaffold手动将整数字段添加到 rails 脚手架
【发布时间】:2014-04-22 01:21:40
【问题描述】:

我是 Rails 新手...我做了一个脚手架“评论”,但想添加另一个字段“评级”,作为一个整数。我做了以下事情:

在迁移文件中添加了t.integer :ratings。运行rake db:migrate

在 spec 文件夹中:将其添加到 views/app/ 编辑、索引、新建、显示中

在 app/views/app 中将其添加到 json 文件中

在 app/controllers/app 中将其添加到 review_params 函数中

然而,每当我尝试引用(通过显示评论)时,我都会得到 ​​p>

# 的未定义方法“评分”

我必须在某处添加其他内容才能使其成为我的评论脚手架的一部分。我已经尝试了 5 个小时,但仍然没有。当我尝试重新制作脚手架并运行 rake db:migrate 时,我收到一条错误消息,指出数据库已经存在,所以如果可能的话,我想手动将其添加到现有的数据库中,我似乎无法弄清楚如何甚至虽然我已经为一个字符串做过一次。

感谢您的帮助。

【问题讨论】:

    标签: ruby-on-rails migrate scaffold


    【解决方案1】:

    要将整数字段添加到模型中,您可以执行以下操作。

    rails generate migration AddRatingToReviews rating:integer
    

    这应该通过像这样生成一个新的迁移文件来为您处理所有事情。

    class AddRatingsToReviews < ActiveRecord::Migration
      def change
        add_column :reviews, :rating
      end
    end
    

    然后您可以运行 rake db:migrate 将列添加到您的审核模型中。

    注意:在执行所有这些操作之前,请删除所有手动更改。如有必要,使用 rake db:rollback 将回滚您最近的 rake db:migrate。

    推荐

    如果您是 Rails 新手并且不了解 MVC,我建议您不要使用脚手架,因为您很难知道它在做什么。通过 Michael Hartl 的这个很棒的教程来真正快速地学习 Rails。 http://ruby.railstutorial.org/

    *真棒宝石*

    使用 annotate gem 直接在 name_of_model.rb 文件中显示模型中包含的属性。

    https://github.com/ctran/annotate_models

    【讨论】:

    • 它会处理视图文件和控制器中的所有内容吗?还是我需要手动添加“评级”?
    • 我认为您在概念上并没有理解模型是什么。看看这里stackoverflow.com/questions/1931335/…
    • 我了解 MVC 的概念,并且一直在学习该教程。我遇到的问题不在于新文件或字段的迁移,而是 Review 似乎实际上没有评级字段,尽管我手动将其添加到其他文件中,就像我对另一个有效的字段所做的那样。引用该字段会导致错误提示该方法未定义。
    • 例如,当我尝试创建新评论并有一个用于评分的 div 时,我收到一条错误消息,指出评分是一种未定义的评论方法。
    • 手动将其添加到其他文件是什么意思?你不应该这样做。只需使用上述 rails generate 命令即可。这样做: 1. 输入 'rails c' 转到 rails 控制台 2. 通过输入 'Review.attribute_names' 查看您的评论模型中的属性列表。你在那里看到你的属性了吗?
    【解决方案2】:
    rails generate migration AddRatingsToReviews ratings:integer
    

    然后

    rake db:migrate
    

    【讨论】:

    • 所以这会自动将所需的代码添加到视图文件和控制器中?和json?
    【解决方案3】:

    如果您没有对生成的脚手架进行任何重大更改。

    获取跨视图评分的最简单方法如下:

    • 回滚已迁移的更改

    rake db:rollback VERSION=version_number

    version_number 替换为迁移文件中前缀的版本号。

    例如:如果您的迁移文件名是 20140314190622_create_reviews.rb 那么命令应该是

    rake db:rollback VERSION=20140314190622
    
    • 销毁Review的脚手架

    rails d 脚手架评论

    • 在此之后再次使用整数字段生成脚手架

    rails g scaffold Review ratings:integer .... ## 添加其他字段代替 ....

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-20
      • 2010-11-26
      • 2014-07-31
      • 2011-04-09
      • 1970-01-01
      • 2011-12-20
      • 2011-08-03
      • 2022-01-23
      相关资源
      最近更新 更多