У меня есть две модели с ассоциацией HABTM, скажем, книга и автор.
class Book
has_and_belongs_to_many :authors
end
class Author
has_and_belongs_to_many :books
end
Автор имеет набор атрибутов (например, имя, фамилия, возраст), которые могут быть пустыми (см. Проверку).
validates_length_of :first_name, :maximum => 255, :allow_blank => true, :allow_nil => false
В books_controller я делаю следующее, чтобы добавить всех авторов в книгу за один шаг:
@book = Book.new(params[:book])
@book.authors.build(params[:book][:authors].values)
Мой вопрос: Какой самый простой способ избежать сохранения авторов, у которых все поля являются пустыми, чтобы избежать слишком большого "шума" в базе данных?
На данный момент я делаю следующее:
validate :must_have_some_data
def must_have_some_data
empty = true
hash = self.attributes
hash.delete("created_at")
hash.delete("updated_at")
hash.each_value do |value|
empty = false if value.present?
end
if (empty)
errors.add_to_base("Fields do not contain any data.")
end
end
Может быть, есть более элегантный, подобный Rails способ сделать это.
Спасибо.