3

ナンバーと景品の2つのクラスがあります。

class Number < ActiveRecord::Base
  belongs_to :account
  has_many :freebies

end

class Freebie < ActiveRecord::Base
  belongs_to :number

  attr_accessible :name, :data

  has_attached_file :data, :path => "freebies/:id_partition/:filename"

  def to_s
    name
  end
end

has_manyとbelongs_toの関係を持つ他のすべてのクラスは正常に機能しますが、次のように呼び出すと次のようになります。

n = Number.last
n.freebies.create

このエラーが発生します:

NameError: uninitialized constant Number::Freeby
    from /Users/Robby/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.8/lib/active_record/inheritance.rb:111:in `compute_type'
    from /Users/Robby/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.8/lib/active_record/reflection.rb:172:in `klass'
    from /Users/Robby/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.8/lib/active_record/associations/collection_association.rb:148:in `transaction'
    from /Users/Robby/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.8/lib/active_record/associations/collection_association.rb:431:in `create_record'
    from /Users/Robby/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.8/lib/active_record/associations/collection_association.rb:119:in `create'
    from /Users/Robby/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.8/lib/active_record/associations/collection_proxy.rb:46:in `create'
    from (irb):20
    from /Users/Robby/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.2.8/lib/rails/commands/console.rb:47:in `start'
    from /Users/Robby/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.2.8/lib/rails/commands/console.rb:8:in `start'
    from /Users/Robby/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.2.8/lib/rails/commands.rb:41:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

Freebieクラスはieで終わり、RailsはFreebieではなく単数バージョンの「Freeby」を作成しようとするため、他にもいくつか問題がありました。それでも、なぜこれが機能しないのかわかりません。

4

2 に答える 2

2

Rails は、単語の複数形を単数形から、またその逆から自動的に推測しようとします。デフォルトの語形変化規則をオーバーライドすることを検討することをお勧めします。

この Stackoverflow questionの回答に似たものを試してください。

于 2012-11-21T16:43:49.707 に答える
0
"n.freebie.build" 

あなたがやろうとしているのと同じことをします。それが機能するかどうか教えてください。

于 2012-11-21T17:15:21.260 に答える