Hel*_*rld 1 ruby-on-rails mongodb mongoid ruby-on-rails-3
我正在使用带有mongoid 2的Rails 3.我有一个mongoid类论坛,它嵌入了很多主题.主题embeds_many forumposts
当我试图保存一个forumpost在我的控制器中执行以下操作时...
@forum = Forum.find(params[:forum_id])
@forum.topics.find(params[:topic_id]).forumposts.build(:topic_id => params[:forumpost][:topic_id], :content => params[:forumpost][:content], :user_id => current_user.id,:posted_at => Time.now, :created_at => Time.now, :updated_at => Time.now)
if @forum.save
Run Code Online (Sandbox Code Playgroud)
救了我得...
未定义的方法`每个'为2012-11-14 23:15:39 UTC:时间
为什么我会收到这个错误?
我的forumpost课程如下......
class Forumpost
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Paranoia
field :content, type: String
field :topic_id, type: String
field :user_id, type: String
field :posted_at, type: DateTime
attr_accessible :content, :topic_id, :user_id, :posted_at, :created_at, :updated_at
validates :content, presence: true
validates :topic_id, presence: true
validates :user_id, presence: true
belongs_to :topic
belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)
您的示例代码有很多错误/很奇怪,所以让我们看看我们是否可以从头开始:
你说论坛嵌入了许多主题,其中嵌入了许多帖子.但您的模型使用的是belongs_to关联.Belongs_to用于与嵌入文档不同的引用.如果你的Topic模型有这个:
class Topic
...
embeds_many :forumposts
...
end
Run Code Online (Sandbox Code Playgroud)
然后你的Forumpost模型应该有:
class Forumpost
...
embedded_in :topic
...
end
Run Code Online (Sandbox Code Playgroud)
阅读参考文献与嵌入式文档:http://mongoid.org/en/mongoid/docs/relations.html
接下来,您不需要将:topic_id放入forumpost中,因为您正在构建它.
接下来,请不要保存论坛,保存forumpost.而不是进行构建然后进行保存,尝试将其作为一次创建.
接下来,请尝试设置user => current_user,而不是设置user_id => current_user.id.这是belongs_to关联提供的神奇之处......它更清洁,避免弄乱ID.
接下来,为什么你需要created_at(由Mongoid :: Timestamps提供)和posting_at?
最后一点,您不需要设置时间戳,它们应该在创建/更新时自动设置(除非出于某种原因,您实际上需要使用posting_at).
尝试更像这样的东西:
@forum = Forum.find(params[:forum_id])
@topic = @forum.topics.find(params[:topic_id])
if @topic.forumposts.create(:content => params[:forumpost][:content], :user => current_user)
#handle the success case
else
#handle the error case
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2633 次 |
| 最近记录: |