是否有可能有以下的一种关系:Mongoid - 是否可以嵌入模型的embedded_in?
用户:
class User
include Mongoid::Document
include Mongoid::Paperclip
include Mongoid::Timestamps
store_in :users
belongs_to :team
field :full_name, :type => String
field :email, :type => String
attr_accessible :full_name,
end
任务:
class Task
include Mongoid::Document
include Mongoid::Timestamps
embedded_in :user
embeds_one :sender, :class_name => "User"
field :text, :type => String
field :due_time, :type => DateTime
field :completed, :type => Boolean, :default => false
attr_accessible :text, :due_time
end
但是当我尝试它在rails console
,我有以下几点:
> u1 = User.where(...).first
> u2 = User.where(...).first
> task = Task.new
> task.user = u1
> task.sender = u2
NoMethodError: undefined method `first' for #<Task:0x47631bc9>
from org/jruby/RubyKernel.java:227:in `method_missing'
from /Users/larry/.rvm/gems/[email protected]/gems/mongoid-2.4.6/lib/mongoid/attributes.rb:166:in `method_missing'
from /Users/larry/.rvm/gems/[email protected]/gems/mongoid-2.4.6/lib/mongoid/relations/embedded/many.rb:292:in `substitute'
from org/jruby/RubyProc.java:270:in `call'
from org/jruby/RubyProc.java:220:in `call'
from /Users/larry/.rvm/gems/[email protected]/gems/mongoid-2.4.6/lib/mongoid/relations/embedded/atomic.rb:61:in `atomically'
from org/jruby/RubyProc.java:270:in `call'
from org/jruby/RubyProc.java:220:in `call'
from /Users/larry/.rvm/gems/[email protected]/gems/mongoid-2.4.6/lib/mongoid/relations/embedded/atomic.rb:82:in `count_executions'
from /Users/larry/.rvm/gems/[email protected]/gems/mongoid-2.4.6/lib/mongoid/relations/embedded/atomic.rb:60:in `atomically'
from /Users/larry/.rvm/gems/[email protected]/gems/mongoid-2.4.6/lib/mongoid/relations/embedded/many.rb:290:in `substitute'
from org/jruby/RubyKernel.java:1787:in `tap'
from /Users/larry/.rvm/gems/[email protected]/gems/mongoid-2.4.6/lib/mongoid/relations/embedded/many.rb:283:in `substitute'
from /Users/larry/.rvm/gems/[email protected]/gems/mongoid-2.4.6/lib/mongoid/relations/accessors.rb:128:in `tasks='
from org/jruby/RubyProc.java:270:in `call'
from org/jruby/RubyKernel.java:2080:in `send'
就是这种定义是不可能的或者还有其他问题?
为什么任务文件中未嵌入两个用户,一个用于发送和一个给用户? – 2012-03-06 16:00:46
添加了一个有你的层次结构的答案,让我知道,如果这是你在找什么。 – 2012-03-06 16:10:05