2

我已经使用在rails中创建了模型

rails g model User uid:integer name:string

rails g model Post message:string user:references

以上行生成的模型如下

class User < ActiveRecord::Base
  attr_accessible :name, :uid
end

class Post < ActiveRecord::Base
  belongs_to :user
  attr_accessible :message
end

现在我需要has_many :postsUser模型中显式添加 a 吗?

还有我怎样才能user_idPost模型中制作NOT NULL

谢谢。

4

2 回答 2

3

现在我需要在用户模型中显式添加一个 has_many :posts 吗?

是的,如果您想查找用户 User.firs.posts 的帖子

另外我怎样才能使 Post 模型中的 user_id 不是 NULL ?

添加迁移

change_column :posts, :user, :integer, :null => false
于 2012-12-19T21:13:33.417 回答
1

您不一定需要 ,has_many :posts除非您要进行类似current_user.posts. Rails 使用关联来绑定这样的查询。

为了确保 user_id 不为空,您可以做一个或两个。

  1. 在您的模型中添加验证,如下所示:

validates :user_id, :presence => true

  1. 添加数据库约束以使数据库也不允许空值

t.integer "user_id", :null => false

后者将通过不允许您通过 SQL 查询插入值 null 来使数据库保持一致。

于 2012-12-19T21:17:22.630 回答