即使在指定belongs_to之后,我是否需要明确提及has_many?

时间:2012-12-19 21:09:53

标签: ruby-on-rails activerecord

我使用

在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 :posts模型中明确添加User吗?

我如何在user_id模型Post中制作NOT NULL

感谢。

2 个答案:

答案 0 :(得分:3)

  

现在我需要在User模型中明确添加一个has_many:帖子吗?

如果您要查找用户User.firs.posts

的帖子,请单击“是”
  

如何在Post模型中使用user_id NOT NULL?

添加迁移

change_column :posts, :user, :integer, :null => false

答案 1 :(得分:1)

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

为了确保user_id不为null,您可以执行其中一项或两项。

  1. 在模型中添加验证,如下所示:
  2. validates :user_id, :presence => true

    1. 添加数据库禁令以使数据库也不允许空值
    2. t.integer "user_id", :null => false

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