Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在RubyonRails中扩展ActiveRecord::Base时,如何指定列名和类型?_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails 在RubyonRails中扩展ActiveRecord::Base时,如何指定列名和类型?

Ruby on rails 在RubyonRails中扩展ActiveRecord::Base时,如何指定列名和类型?,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,请原谅我的无知,如果我错过了一些非常琐碎的事情,我对RoR是非常陌生的 来自Django的背景,我记得模特们 class Post(models.Model): title = models.CharField(max_length=100) description = models.TextField() 列名称和字段类型都已明确指定 当我编写这个rails命令时 > rails g model Post title:string description:text 我

请原谅我的无知,如果我错过了一些非常琐碎的事情,我对RoR是非常陌生的

来自Django的背景,我记得模特们

class Post(models.Model):
    title = models.CharField(max_length=100)
    description = models.TextField()
列名称和字段类型都已明确指定

当我编写这个rails命令时

> rails g model Post title:string description:text
我得到的只是

class Post < ActiveRecord::Base
  attr_accessible :description, :title
end
class Post
在扩展
ActiveRecord::Base
时,是否有办法写入列名和字段类型,而不是只在迁移文件中使用它们?


谢谢,非常感谢您提供的任何帮助。

attr\u accessible已被弃用,并且控制器中的强大参数将取代it功能

如果要在模型文件中获取模式信息列表,可以在文件顶部对其进行注释。这在某种程度上是最佳实践,但我不认为它使用得太多。我个人不喜欢这样,只使用模式

发布最佳实践和注释:

要自动注释的Gem:
ActiveRecord最奇妙的一点是,您不需要进行任何映射,因为所有字段都是使用当前模式自动映射的。当然,如果需要,可以覆盖默认映射,但是这种情况非常罕见


这种方法被称为“约定优先于配置”,在Rails中随处可见——它为您试图实现的目标假设了最常见的参数,因此它节省了大量不必要的编码和映射。一开始可能会觉得很奇怪,尤其是你需要学习如何覆盖这些默认值,但我保证,当你习惯它时,你会喜欢它的。:)

你的意思是说rails中没有办法做到这一点,我的意思是我知道我可以发表评论,但是rails没有语法可以做到这一点?我不知道有什么方法可以做到这一点。即使有一种方法,您也不应该在Rails中这样做。这将是走出黄金之路的一步。使用迁移有什么问题?如果确实要在模型中设置某些内容,可以使用alias_属性。不过,您需要有一个已经存在的列名。别名属性:新列名称,:真实列名称