Проверка класса и суперкласса на RoR - PullRequest
1 голос
/ 18 мая 2010

В ruby ​​у вас есть атрибут с именем "type", который является классом объекта. Rails хранит это в базе данных в столбце с именем type. Итак, если у меня есть несколько «типов» блогов, я могу сделать что-то вроде этого

def create
  @blog = Blog.new(params[:blog])
  @blog[:type] = params[:blog][:type]
  # ...
end

Если я добавлю кого-то вроде этого, а затем загрузлю его и задам его класс (например, на консоли), мне ответят правильное имя класса.

Однако, когда я сохраню его впоследствии, рельсы будут запускать только валидаторы суперкласса , а не те, которые я определил в подклассе.

Как заставить рельсы запускать валидаторы подкласса?

1 Ответ

0 голосов
/ 18 мая 2010

blog.rb

class Blog < ActiveRecord::Base

  belongs_to :type

  validates_associated :type

  # you might also be interested in:
  # accepts_nested_attributes_for :type

end

blogs_controller.rb

class BlogsController < ApplicationController

  def create
    @blog = Blog.new(params[:blog])
    if @blog.save
      # ...
    end
  end

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...