没有数据库中的表的验证模型

时间:2014-02-07 16:32:50

标签: ruby-on-rails ruby validation model

我有一个名为 messages_controller

的控制器
class MessagesController < ApplicationController
  ...
end

以及在用户的电子邮件地址上发送邮件的表单:

  = form_for [@user, @message], :validate => true do |f|
    = f.text_field :subject, :maxlength => 100
    = f.text_area :body, :placeholder => 'Your message...'
    = f.submit 'Send message'

我想验证此表单,因此我创建了此模型 - message.rb

class Message
  include ActiveModel::Validations
  include ActiveModel::Conversion
  extend ActiveModel::Naming

  attr_accessor :name, :body

  validates_presence_of :name
  validates_presence_of :body

  def initialize(attributes = {})
    attributes.each do |name, value|
      send("#{name}=", value)
    end
  end

  def persisted?
    false
  end
end

但是,当我运行应用程序时,收到以下错误消息:

undefined method `reflect_on_association' for Message:Class

我的表格结构 - 控制器 - 模型有什么问题?

我在这里不是很有经验,所以我非常感谢你的每一条建议。

谢谢

1 个答案:

答案 0 :(得分:1)

您在form_for中使用的是嵌套资源路径,但您尚未告知消息belongs_to :user。因为它是无用的,你将无法做到。从[@user, @message]中删除form_for。如果您仍然需要用户ID,请添加hidden_field