Sha256: bcbbcfbc71ba7f19ecf3ad45c9b9c81a1474e719868d0d242bda1a6b2747e0d1

Contents?: true

Size: 844 Bytes

Versions: 5

Compression:

Stored size: 844 Bytes

Contents

class Odania::MenuItem < ActiveRecord::Base
	serialize :target_data

	belongs_to :parent, class_name: 'Odania::MenuItem'
	belongs_to :menu, class_name: 'Odania::Menu'

	validates_presence_of :title, minimum: 1
	validate :validate_target

	def validate_target
		unless Odania::TargetType.targets.keys.include?(self.target_type)
			errors.add(:target_type, 'invalid target_type')
		end

		error_msg = Odania::TargetType.validate_data(self, self.target_type, self.target_data)
		unless error_msg.nil?
			errors.add(:target_type, error_msg)
		end
	end

	def get_target_path
		"#{self.menu.get_target_path}/#{self.full_path}"
	end

	before_create do
		# Find next position
		menu_item = self.menu.menu_items.where(parent_id: self.parent_id).order('position DESC').first
		self.position = menu_item.nil? ? 1 : menu_item.position + 1

		true
	end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
odania_core-0.0.8 app/models/odania/menu_item.rb
odania_core-0.0.7 app/models/odania/menu_item.rb
odania_core-0.0.6 app/models/odania/menu_item.rb
odania_core-0.0.5 app/models/odania/menu_item.rb
odania_core-0.0.4 app/models/odania/menu_item.rb