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

时间:2016-01-04 21:53:14

标签: ruby-on-rails ruby ruby-on-rails-4 activemodel

似乎我错过了铁轨4上的红宝石的魔力。 我想创建一个包含ActiveModel::Model的对象,但哪个类名包含两个单词。

因此,我使用以下代码创建了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'

当我删除postfix Form并将文件重命名为app/models/registration.rb时,everthing工作正常。

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

默认情况下,表名是snake case中模型名称的复数形式,因此如果您有模型onCreateView(),则数据库中的表名为GiantPanda

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

giant_pandas