У меня есть модель, например, статья. Статья has_one ArticleContent. ArticleContent по умолчанию проверяет все свои атрибуты. Но мне нужна дополнительная функциональность - чтобы сохранить проект статьи без какой-либо проверки. Итак, я передаю: draft => false как один из параметров в Article.new(), затем я делаю @ article.build_article_content(). В ArticleContent есть некорректный код:Проверка ActiveRecord по атрибуту родителя
def draft?
raise self.article.draft
end
validates_presence_of :header, :message => "We have no fuckin' header!", :unless => :draft?
Конечно, это не работает. В момент проекта? исполнения нет никакого подходящего объекта статьи в любом месте, поэтому self.article возвращает nil. Хорошая попытка, codemonkey ...
У кого-нибудь есть сладкие идеи? Я думаю, чтобы сделать @ content.save! это не очень хорошая идея
UPDATE
Я попробовал так:
def draft
self[:draft]
end
def draft=(value)
self[:draft] = value
end
def draft?
self[:draft]
end
validates_presence_of :field1, :message => "msg1", :unless => :draft?
validates_presence_of :field2, :message => "msg2", :unless => :draft?
validates_presence_of :field3, :message => "msg3", :unless => :draft?
Это работает, но как я могу это группа?
unless self.draft?
validates_presence_of :field1, :message => "msg1"
validates_presence_of :field2, :message => "msg2"
validates_presence_of :field3, :message => "msg3"
end
Говорит, что проект? метод не найден. Также я должен делать
@article.content.draft = @article.draft
И это выглядит грязно-грязный хак слишком
Извините, я только что видел ваше обновление. – noodl