2

スタンドアロンの Ruby アプリケーションがあり、それをアクティブなレコード gem で使用したいと考えています。3 つのモデルを作成しました: user.rb

require 'active_record'

class User < ActiveRecord::Base
  has_many :posts, :dependent => :destroy
  has_many :comments

  validates :name, :presence => true

  attr_accessible :name, :state
end

post.rb

require 'active_record'

class Post < ActiveRecord::Base
  belongs_to :user
  has_many :comments

  validates :title, :length => { :in => 6..40 }

  attr_accessible :title, :content
end

コメント.rb

require 'active_record'

class Comment < ActiveRecord::Base
  belongs_to :user
  belongs_to :post

  validates :content, :presence => true

  attr_accessible :content, :user_id
end

ここで、次のコードを発行して、データベースに 1 人のユーザー、1 つの投稿、およびこの投稿とユーザーに対する 1 つのコメントを入力します。

require 'active_record'
require 'sqlite3'
require './models/user'
require './models/post'
require './models/comment'

ActiveRecord::Base.configurations = YAML::load(IO.read('config/database.yml'))
ActiveRecord::Base.establish_connection("development")

user1 = User.create name: "Joe",   state: "England"

post1 = user1.posts.create title: "RoR introduction", content: "RoR intro."

comment1 = post1.comments.create content: "This is great article!"

しかし、今ではデータベースにデータが入力されていますが、user_id は null です。ここで何が欠けていますか?

4

2 に答える 2

0

よくわかりませんが、アクティブ レコード クラスにこれらの attr_accessible 仕様が必要だとは思いません。アクティブ レコードが自動的に提供するフィールドに干渉していると思います。それらをすべて削除してみてください。

于 2013-04-10T16:00:23.190 に答える