我相对较新的rails并做最简单的事情:关联用户和帖子。我读了this,但是我需要做些什么来使它工作(或者这是唯一的事情)?:
class User < ActiveRecord::Base
has_many :posts, :dependent => :destroy
end
class Post < ActiveRecord::Base
belongs_to :user
end
更新
我不能让它发挥作用。当我使用已登录的用户发帖时,当我在控制台中@user.posts.any?
时,我会收到错误。我的代码:
post.rb
class Post < ActiveRecord::Base
attr_accessible :title, :user_id
belongs_to :user
before_create :default_values
user.rb(我使用设计)
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :email, :password, :password_confirmation, :remember_me
has_many :posts, dependent: :destroy
end
20130320162700_create_posts.rb
class CreatePosts < ActiveRecord::Migration
def change
create_table :posts do |t|
t.string :title
t.integer :user_id
t.timestamps
end
end
end
答案 0 :(得分:0)
您应确保在创建posts表的迁移中包含User's id。 在您的迁移文件中(在db / migrate文件夹中,您将找到名为20130325105934_create_posts.rb的文件)
在文件中,您将找到迁移代码。沿着其他声明的属性添加
class CreatePosts < ActiveRecord::Migration
def change
create_table :posts do |t|
......
t.integer :user_id
......
end
端
让事情滚动就足够了: - )
在您的代码中,您可以创建一个新用户
@user = User.new(:login => "my_user", .....)
然后使用以下两种方式之一添加帖子(还有其他两种方式)。
post = Post.new(:title => "something", :text => "more of something", :user_id = @user.id)
或
post = Post.new(:title => "something", :text => "more of something")
@user.posts << post