has_many的正确案例:当两个类都是大写时

时间:2012-12-11 07:02:57

标签: ruby-on-rails ruby-on-rails-3

我有两个班级PSAZIP,并且由PSAZIP与has_many相关联:& :通过

我在每个课程中都会抛出以下错误:

psa.rb(由rails g scaffold PSA生成)

class Psa < ActiveRecord::Base
  has_many :psazips
  has_many :zips, :through => psazips
end

psazip.rb(由rails g scaffold PSAZIP生成)

class Psazip < ActiveRecord::Base
  belongs_to :psa
  belongs_to :zip
end

zip.rb(由rails g scaffold ZIP生成)

class Zip < ActiveRecord::Base
  has_many:psazips
  has_many:psas, :through => :psazips
end

当两个类完全是大写时,语法和大小写语法是什么?当我有两个其他类关系(PSAState时,rb文件名为psa_state.rb)。

我是否必须将psazip.rb重命名为psa_zip.rb?如果是这样,我还需要在哪里做出改变?

1 个答案:

答案 0 :(得分:1)

你所拥有的应该按原样运作。

Rails会将用camel case编写的任何类名转换为文件名的小写/下划线形式。它认为PSAZIP只是一个字。它不会将其视为驼峰,因此会生成psazip而不是psa_zip。如果您使用PsaZipPSAZip,则会生成psa_zip

但是,只要您坚持使用类名Psazip,一切都应该按照您的要求运作。