独立Ruby中的活动记录

我有独立的Ruby应用程序,并希望将它与活动记录gem一起使用。 我做了3个型号:user.rb

require 'active_record' class User  :destroy has_many :comments validates :name, :presence => true attr_accessible :name, :state end 

post.rb

 require 'active_record' class Post  { :in => 6..40 } attr_accessible :title, :content end 

comment.rb

 require 'active_record' class Comment  true attr_accessible :content, :user_id end 

现在我想通过发出以下代码,用一个用户,一个post和一个评论为这篇post和用户填充数据库:

 require 'active_record' require 'sqlite3' require './models/user' require './models/post' require './models/comment' ActiveRecord::Base.configurations = YAML::load(IO.read('config/database.yml')) ActiveRecord::Base.establish_connection("development") user1 = User.create name: "Joe", state: "England" post1 = user1.posts.create title: "RoR introduction", content: "RoR intro." comment1 = post1.comments.create content: "This is great article!" 

但现在它填充数据库但user_id为null。 我在这里想念的是什么?

我认为您的评论与post相关联,而不是用户…

只要说comment1.user = user1然后是comment1.save!

我认为这里的关键问题是发表评论的用户不一定是制作原始post的用户。 如果是这种情况,您可以通过through选项强制执行。 但是,由于任何用户都可以评论post,然后说post1.comments.create等不应该自动拉入创建post的用户吗? 因为它可能是另一个用户……

我不确定,但我认为你不想在活动记录类中使用那些attr_accessible规范 – 我认为它们会干扰活动记录自动提供的字段 – 尝试删除所有这些字段