Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.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 大写名称的Rails命名约定_Ruby On Rails_Ruby_Activerecord_Model_Naming - Fatal编程技术网

Ruby on rails 大写名称的Rails命名约定

Ruby on rails 大写名称的Rails命名约定,ruby-on-rails,ruby,activerecord,model,naming,Ruby On Rails,Ruby,Activerecord,Model,Naming,我有一个模型课: class QRCode < ActiveRecord::Base has_many :properties end class QRCode

我有一个模型课:

class QRCode < ActiveRecord::Base

  has_many :properties

end
class QRCode
因此rails需要一个名为“qr_codes”的数据库表和一个名为“qr_code_id”的外键。 但作为我的属性模型中的关系,它需要另一个名称:

class Property < ActiveRecord::Base

  belongs_to :q_r_code

end
class属性
因此,如果我想创建一个属性对象,我“必须说”:q\r\u code=>qrcode” 但是active\u record需要qr\u code属性,因为该列称为“qr\u code\u id”

我是否理解错了,或者Rails无法映射这种类型的名称


注意:我正在使用Rails 3.0.3

接受一个
:foreign\u key
:class\u name
属性。

我将重命名我的类
QrCode
。换句话说,我使用camel大小写来表示单词边界,而不是原始术语是否是首字母缩略词的概念。这是将Rails用于遗留数据库时让我恼火的事情之一。字段名通常来自左字段,因为DB或表的原始创建者没有停下来考虑使用SQL和控制台以外的语言访问表。考虑带有规则和假设的ORM完全超出了他们的范围。正如@Simone Carletti所指出的,Rails允许我们用键或表的实际名称覆盖其假设,但我们仍然会留下命名笨拙的模型和字段,这导致我们在发现问题时遭到一些诅咒。多亏了,最后我将我的类重命名为QrCode,因为我可以避免这种关系和路由的定制