我有以下关系。我想要一个帖子来has_one current_wrent但也有很多wrents来记录wrent对象。我认为这个问题可能与铁路混淆了我认为的关系。
当我引用post.current_wrent时,这是正确返回而没有错误。
Class Post
include Mongoid::Document
include Mongoid::Timestamps
...
has_one :current_wrent, :class_name => "Wrent", :inverse_of => :current_wrent, :autosave => true, :dependent => :destroy
has_many :wrents, :inverse_of => :post, :dependent => :destroy
end
Class Wrent
..
belongs_to :post, :autosave => true
..
end
当我做某事...... (在Wrent.rb中)
def accept!
update_attributes!(:status => 1, :accepted => true)
post.current_wrent = self
post.available = false
post.save!
notify_user
end
我得到一个“当前的Wrent”是无效的错误,有人能指出我在这里做错了吗?
编辑:这似乎工作正常。 在wrent.rbClass Wrent
..
belongs_to :post, :inverse_of => :wrent, :autosave => true
belongs_to :post, :inverse_of => :current_wrent
在post.rb中 班级职位 ......
has_one :current_wrent, :class_name => "Wrent", :inverse_of => :post
belongs_to :current_wrent, :class_name => "Wrent", :inverse_of => :post
has_many :wrents, :inverse_of => :post, :dependent => :destroy
我仍然不确定问题是什么,但现在我可以通过belongs_to current_wrent_id列访问post.current_wrent,问题似乎消失了。
答案 0 :(得分:1)
你的Wrent模型可能有一个post_id字段,其中存储了它所属的帖子的id。但Post中没有字段来存储current_wrent。 Mongoid允许你嵌入对象,所以你可以做的是embeds_one而不是has_one。
Class Post
include Mongoid::Document
include Mongoid::Timestamps
...
embeds_one :current_wrent, :class_name => "Wrent", :inverse_of => :current_wrent
has_many :wrents, :inverse_of => :post, :dependent => :destroy
end