Rails虚拟模型

问题描述 投票:0回答:1

在我的应用程序中,我有一个多态Idea模型。我想将其与项目,机会等不同实体一起使用。在idea表中,使用ideable_idideable_type进行区分。因此,例如,对于项目,ideable_idproject_idideable_typeProject。为了机会,ideable_idopportunity_idideable_typeOpportunity

我想为名为idea的模型创建ideabankideabank是一个虚拟模型,它不是类似于projectopportunity的实体。我该如何在没有数据库表示的情况下创建这样的模型,该模型会给我ideable_idideable_type?还是在将ideable_id添加到ideable_type时将ideaideabank的字段保留为空?

ruby-on-rails-3 model virtual
1个回答
8
投票

如果使用滑轨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

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
© www.soinside.com 2019 - 2024. All rights reserved.