在我的应用程序中,我有多态的想法模型,我正在使用不同的实体,如项目,机会等。
在想法表中,它使用ideable_id和amp; ideable_type
E.G.- For Project ideable_id是project_id& ideable_type是'Project'
E.G.- For Opportunity ideable_id是opportunity_id& ideable_type是'机会'
现在我的问题是我必须为ideabank& ideabank不是像项目或机会这样的实体,而是虚拟实体。那么我应该如何创建没有数据库的模型,这将给我ideable_id& ideable_type?或者在向ideabank添加想法时,我将这两列保持为空白吗?
答案 0 :(得分: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
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