我有两个班,编号和免费赠品:
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试图使单数版本“Freeby”而不是Freebie。不过,我不确定为什么这不起作用。
答案 0 :(得分:2)
Rails会自动尝试从单数形式推断单词的复数版本,反之亦然。您可能希望查看覆盖默认的变形规则。
尝试与this Stackoverflow question中的答案类似的内容。
答案 1 :(得分:0)
"n.freebie.build"
做同样的事情。 如果有效,请告诉我。