我有一个简单的一对多关系将用户映射到帖子。这是架构的相关部分:
create_table "users", :force => true do |t|
t.string "username"
t.string "first_name"
t.string "last_name"
t.string "email"
t.string "password"
t.string "status", :default => "User"
t.string "img_url"
t.text "bio"
t.integer "num_posts", :default => 0
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "posts", :force => true do |t|
t.string "subject"
t.text "body"
t.integer "user_id"
t.integer "section_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
以下是模型:
class User < ActiveRecord::Base
attr_accessible :bio, :email, :first_name, :img_url, :last_name, :num_posts, :password, :status, :username
has_many :posts
has_many :comments
end
class Post < ActiveRecord::Base
attr_accessible :body, :section_id, :subject, :tag_ids, :user_id
belongs_to :user
belongs_to :section
has_and_belongs_to_many :tags
has_many :comments
end
我进入 Rails 控制台并创建一个执行 User.create(attributes) 的新用户和一个执行 Post.create(some attributes) 的新帖子,分别将它们分配给 p1 和 u1,然后我执行 p1.user = u1。
现在,当我执行 p1.user 时,我得到了一个 u1 对象。此外,我可以看到 user_id 键设置为数据库中 u1 的键。但是,当我执行 u1.posts 时,我得到一个空列表。如何获取属于给定用户的所有帖子的列表?