Виртуальная модель Rails - PullRequest
       2

Виртуальная модель Rails

0 голосов
/ 23 декабря 2011

В моем приложении у меня есть полиморфная модель идеи, которую я использую с другой сущностью, такой как проект, возможность и т. Д. В таблице идей это дифференцируется с использованием ideable_id & ideable_type
E.G.- Для Project ideable_id - это project_id, а ideable_type - это «Project» E.G.- Для Opportunity ideable_id - возможность_id, а ideable_type - «Возможность»

Теперь мой вопрос заключается в том, что мне нужно создать идею для идеабанка, а идеабанк - это не сущность, подобная проекту, или возможность, а виртуальная сущность. Так как же мне создать модель без базы данных, которая даст мне ideable_id & ideable_type? или, добавляя идею в ideabank, я оставляю эти два столбца пустыми?

1 Ответ

8 голосов
/ 14 июля 2012

Если вы используете рельсы 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...