vendor/plugins/dataset/lib/dataset/record/model.rb in radiant-0.7.2 vs vendor/plugins/dataset/lib/dataset/record/model.rb in radiant-0.8.0
- old
+ new
@@ -1,15 +1,16 @@
module Dataset
module Record # :nodoc:
class Model # :nodoc:
- attr_reader :attributes, :model, :meta, :symbolic_name
+ attr_reader :attributes, :model, :meta, :symbolic_name, :session_binding
- def initialize(meta, attributes, symbolic_name = nil)
- @meta = meta
- @attributes = attributes.stringify_keys
- @symbolic_name = symbolic_name || object_id
+ def initialize(meta, attributes, symbolic_name, session_binding)
+ @meta = meta
+ @attributes = attributes.stringify_keys
+ @symbolic_name = symbolic_name || object_id
+ @session_binding = session_binding
end
def record_class
meta.record_class
end
@@ -29,10 +30,18 @@
end
def to_model
@model ||= begin
m = meta.record_class.new
- attributes.each {|k,v| m.send "#{k}=", v}
+ attributes.each do |k,v|
+ if reflection = record_class.reflect_on_association(k.to_sym)
+ case v
+ when Symbol
+ v = session_binding.find_model(reflection.klass, v)
+ end
+ end
+ m.send "#{k}=", v
+ end
m
end
end
end
\ No newline at end of file