我有模特用户:
class User < ApplicationRecord
has_many :selfies
has_many :likes
has_many :comments
还有自拍模型:
class Selfie < ApplicationRecord
belongs_to :user
has_many :likes, dependent: :destroy
has_many :comments, dependent: :destroy
还有模特评论:
class Like < ApplicationRecord
belongs_to :user
belongs_to :selfie
在我的代码中,我通常可以像某个实例@user.comments.count
一样使用,但我得到了数字,但是当我尝试使用@user.selfies.count
时,我收到了错误
NameError:未初始化的常量User :: Selfy
我在这里做错了什么?我正在思考它的命名约定,但我尝试了一些组合,selfy selfys selfie ......
答案 0 :(得分:3)
尝试使用rails控制台:
"selfies".singularize # -> "selfy"
因此,Rails检测到错误的模型类。你可以作为@guitarman的建议,但你使用selfies
的任何地方都必须这样做。
另一种方法是在selfies
的复数和单数之间创建地图。创建config/initializers/selfies_inflection.rb
并添加地图:
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'selfie', 'selfies'
end
答案 1 :(得分:2)
您需要将模型(以及表格,如果需要)重命名为Selfy,请查看Rails在幕后所做的示例:
$> bundle exec rails console
# convert to table name
"Selfy".tableize
=> "selfies"
# singular
"selfies".singularize
=> "selfy"
# plural
"selfy".pluralize
=> "selfies"
您的AR模型必须是:
class Selfy < ApplicationRecord
end
class Like < ApplicationRecord
belongs_to :user
belongs_to :selfy
end
class User < ApplicationRecord
has_many :selfies
end