39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# File 'lib/tessa/model.rb', line 39
def asset(name, args={})
field = tessa_fields[name] = Field.new(args.merge(name: name))
define_method(name) do
if instance_variable_defined?(ivar = "@#{name}")
instance_variable_get(ivar)
else
instance_variable_set(
ivar,
Tessa::Asset.find(field.id(on: self))
)
end
end
define_method("#{name}=") do |value|
change_set = field.change_set_for(value)
if !(field.multiple? && value.is_a?(AssetChangeSet))
new_ids = change_set.scoped_changes.select(&:add?).map(&:id)
change_set += field.difference_change_set(new_ids, on: self)
end
pending_tessa_change_sets[name] += change_set
field.apply(change_set, on: self)
end
end
|