需要帮助解决Rails中的关联问题!

时间:2010-10-16 18:03:08

标签: ruby-on-rails ruby-on-rails-3

我是铁杆新手,而且我很想学习协会 我正在使用Rails版本3.
我有一个用户模型和发布模型。我需要如下: -

模型

class User < ActiveRecord::Base  
  has_many :post  
end  

class Post < ActiveRecord::Base  
  belongs_to :user  
  validates_associated :user  
end  

模式

ActiveRecord::Schema.define(:version => 20101016171256) do  
  create_table "posts", :force => true do |t|  
    t.integer  "sell_or_buy"  
    t.string   "title"  
    t.text     "body"  
    t.integer  "user_id"  <<<<<<< I thought this will help to associate to user model.  
    t.datetime "created_at"  
    t.datetime "updated_at"  
  end  

  create_table "users", :force => true do |t|  
    t.string   "name"  
    t.string   "email"  
    t.string   "password"  
    t.integer  "rank"  
    t.datetime "created_at"  
    t.datetime "updated_at"  
  end  
end

我想保留一个user_id字段,belongs_to协会将完成我的工作,但是 当我试图显示属于用户的所有帖子时,如下所示:

<%= @user.posts %>  

在我的show.html.erb文件中。但我只得到以下显示: -

Name:  saran  

Email: saran.saran007@gmail.com  

Password: abcd  

Rank:    
Edit | Back  
Posts  
#<Post:0xb69f47f8>#<Post:0xb69f3024>   

我希望以可读格式显示关联的帖子“title”和“body”。

此外,我还可以使用user_id创建一个帖子,其中不存在用户! validates_associated :user也无效,请帮帮我。

3 个答案:

答案 0 :(得分:3)

它的

class User
  has_many :posts
end

has_many :post

修改并更新结果。

答案 1 :(得分:1)

您在视图中按预期收到帖子......所以我不确定我是否理解您的问题。至于另一部分,validates_associated只是确保附加对象本身有效,而不是确实存在。为此你需要validates_presence_ofSee the docs

答案 2 :(得分:0)

为了我的目的,我写了以下部分内容并且效果很好:) 感谢您的所有投入。

<% for post in @user.posts do %>    
   <h3> <%= post.title %> </h3>   
   <%= post.body %>   
<% end %>