`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
看来我在 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