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 :postsに明示的にを追加する必要がありますか?User

user_idまた、Postモデルでどのように作成できNOT NULLますか?

ありがとう。

4

2 に答える 2

3

ここで、ユーザーモデルにhas_many:postsを明示的に追加する必要がありますか?

はい、ユーザーUser.firs.postsの投稿を検索する場合

また、Postモデルのuser_idをNOT NULLにするにはどうすればよいですか?

移行を追加する

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

has_many :postsのようなクエリを作成する場合を除いて、必ずしも必要ではありませんcurrent_user.posts。Railsは、関連付けを使用して、そのようなクエリを結び付けます。

user_idがnullでないことを確認するために、一方または両方を実行できます。

  1. 次のようにモデルに検証を追加します。

validates :user_id, :presence => true

  1. データベース制約を追加して、データベースがそのnull値も許可しないようにします。

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

後者は、SQLクエリを介してnull値を挿入できないようにすることで、データベースの整合性を高めます。

于 2012-12-19T21:17:22.630 に答える