`include ActiveModel::Model`,class 名字有两个以上的单词

`include ActiveModel::Model` with class name having more than two words

看来我在 rails 4 上缺少 ruby 的魔力。 我想创建一个包含 ActiveModel::Model 但 class 名称包含两个词的对象。

因此我使用以下代码创建了 app/models/registration_form.rb

class RegistrationForm
    include ActiveModel::Model
    attr_accessor(:email)
    validates :email, presence: true
end

当使用 RegistrationForm.new 在控制器中创建对象时,出现以下错误:

Could not find table 'registration_forms'

当我删除后缀 Form 并将文件重命名为 app/models/registration.rb 时一切正常。

当上述代码在 rails console 内执行时,一切正常。

错误的堆栈跟踪显示调用了 ActiveRecord: https://gist.github.com/anonymous/273986937cd774b5953c

您似乎正试图在您的派对控制器中初始化一个 ActiveRecord 对象。这可能只是名称冲突。您是否有另一个将 RegistrationForm 定义为常规 ActiveRecord 模型的文件?

默认情况下,table 名称是蛇形模型名称的复数形式,因此如果您有模型 GiantPanda,数据库中的 table 名称是 giant_pandas

如果您的 table 名称是其他名称,您可以覆盖此行为。

class RegistrationForm < ActiveRecord::Base
  include ActiveModel::Model
  self.table_name = "registrations"
end