【问题标题】:Rails virtual modelRails 虚拟模型
【发布时间】:2011-12-23 06:45:26
【问题描述】:

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

我想为名为@9​​87654334@ 的模型创建一个ideaideabank 是一个虚拟模型,它不是像 projectopportunity 这样的实体。我应该如何创建这样一个没有数据库表示的模型,它会给我ideable_idideable_type? 或者我应该将ideable_idideable_type 的字段留空,同时将idea 添加到ideabank

【问题讨论】:

    标签: ruby-on-rails-3 model virtual


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-11
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多