scinote-web/app/models/repository_cell.rb

39 lines
1.3 KiB
Ruby
Raw Normal View History

class RepositoryCell < ActiveRecord::Base
belongs_to :repository_row
belongs_to :repository_column
belongs_to :value, polymorphic: true, dependent: :destroy
belongs_to :repository_text_value,
(lambda do
where(repository_cells: { value_type: 'RepositoryTextValue' })
end),
optional: true, foreign_key: :value_id
belongs_to :repository_date_value,
(lambda do
where(repository_cells: { value_type: 'RepositoryDateValue' })
end),
optional: true, foreign_key: :value_id
belongs_to :repository_list_value,
(lambda do
where(repository_cells: { value_type: 'RepositoryListValue' })
end),
optional: true, foreign_key: :value_id
2018-03-10 00:04:54 +08:00
belongs_to :repository_asset_value,
(lambda do
where(repository_cells: { value_type: 'RepositoryAssetValue' })
end),
optional: true, foreign_key: :value_id
2017-06-06 23:35:29 +08:00
validates :repository_column, presence: true
validate :repository_column_data_type
validates :repository_row,
uniqueness: { scope: :repository_column }
private
def repository_column_data_type
if value_type != repository_column.data_type
errors.add(:value_type, 'must match column data type')
end
end
end