Rails虚拟模型

Sun*_*ny 0 virtual model ruby-on-rails-3

在我的应用程序中,我有多态的想法模型,我使用不同的实体,如项目,机会等.在想法表中,它区分使用ideable_id和ideable_type
EG-对于项目ideable_id是project_id&ideable_type是'项目'EG-对于机会ideable_id是opportunity_id &ideable_type是'机会'

现在我的问题是我必须为ideabank创建想法并且ideabank不是像项目或机会那样的实体它是一个虚拟实体.那么我应该如何创建没有数据库的模型,这将给我ideable_id和ideable_type?或者在为ideabank添加想法时,我是否将这两列留空?

Jia*_*ang 8

如果您使用的是rails 3,请参阅 http://railscasts.com/episodes/219-active-model

models/message.rb

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

  attr_accessor :name, :email, :content

  validates_presence_of :name
  validates_format_of :email, :with => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i
  validates_length_of :content, :maximum => 500

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

  def persisted?
    false
  end
end
Run Code Online (Sandbox Code Playgroud)

messages_controller.rb

def create
  @message = Message.new(params[:message])
  if @message.valid?
    # TODO send message here
    flash[:notice] = "Message sent! Thank you for contacting us."
    redirect_to root_url
  else
    render :action => 'new'
  end
end
Run Code Online (Sandbox Code Playgroud)