在我的应用程序中,我有一个多态Idea
模型。我想将其与项目,机会等不同实体一起使用。在idea
表中,使用ideable_id
和ideable_type
进行区分。因此,例如,对于项目,ideable_id
是project_id
,ideable_type
是Project
。为了机会,ideable_id
是opportunity_id
,ideable_type
是Opportunity
我想为名为idea
的模型创建ideabank
。 ideabank
是一个虚拟模型,它不是类似于project
或opportunity
的实体。我该如何在没有数据库表示的情况下创建这样的模型,该模型会给我ideable_id
和ideable_type
?还是在将ideable_id
添加到ideable_type
时将idea
和ideabank
的字段保留为空?
如果使用滑轨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