2011-12-23 88 views
-1

在我的應用我有我與不同的實體,就像項目中使用多態模型的想法,機會等 在想法表是有區別的使用ideable_id & ideable_type
EG-對於項目ideable_id是PROJECT_ID & ideable_type是'項目」 EG-尋找機會ideable_id是opportunity_id & ideable_type是‘機會’Rails的虛擬模型

現在我的問題是,我有創造理念,爲ideabank & ideabank不喜歡的項目或機會的實體是一個虛擬實體。所以我應該如何創建沒有databsase的模型,它會給我ideable_id & ideable_type?或者在向ideabank添加想法時,我是否將這兩欄留空?

回答

5

如果您使用的軌道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