【问题标题】:Why rails is generating empty models?为什么 rails 会生成空模型?
【发布时间】:2013-10-11 17:22:34
【问题描述】:

我正在尝试生成一些模型,但它们是在没有属性的情况下生成的。

我使用的是 linux 系统,rails 版本是: 导轨--版本 Rails 4.0.0

我尝试使用以下命令生成模型:

rails g scaffold Bsdsd description:string test:string oaso:integer

rails g model Asdsd description:string test:string oaso:integer

在这个空类模型中的第一个结果一切正常:

class Bsdsd < ActiveRecord::Base
end

第二个结果是测试文件,迁移文件(包含属性)和这个类模型:

class Asdsd < ActiveRecord::Base
end

如何纠正这种行为?

【问题讨论】:

  • 您希望生成的模型包含什么?
  • 类地址 <:base attr_accessible :desc end>
  • 不,Rails 不会为您这样做。您必须自己定义可访问性,否则默认情况下,您的所有字段都将是 attr_accessible。

标签: ruby-on-rails ruby ruby-on-rails-4


【解决方案1】:

模型属性是从数据库列中推断出来的,因此您不需要在模型类中指定它们。

在 Rails 3.2 中你有(如果我没记错的话)

# attr_accessible :description, :test, :oaso

行生成。但是受保护的属性在 Rails 4.0 中已被弃用,并被强参数机制所取代。

【讨论】:

  • 是因为rails 4.0版本?我现在正在学习 Rails,但如果 3.2 版本没有错,它是否正在创建属性?谢谢
【解决方案2】:

你所做的一切都是错的。但是您正在检查错误的文件。查找 CreateAsdsdsMigration(在 migrations 目录中)文件,您将在那里看到自动生成的字段

【讨论】:

  • 所以我不应该期望模型类中有任何属性?它只是反映数据库字段?谢谢
【解决方案3】:

对于那些来自 Grails 或 Django 的人,请注意 Rails 会先创建数据库——而不是相反, domainclass.groovy 或 models.py 在您定义它们之后为您创建数据库表。查找 yourapp/db/schema.rb,里面是你的所有类及其字段定义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多