我遇到的情况,该车型看起来像轨has_many_through数据插入问题
create_table :users do |t|
t.string :name
t.timestamps
end
create_table :blogs do |t|
t.string :url
t.string :title
t.text :description
t.timestamps
end
create_table :posts do |t|
t.integer :user_id, :null => false
t.integer :blog_id, :null => false
t.text :post_text
end
class Blog < ActiveRecord::Base
has_many :users, :through =>:posts
has_many :posts, :dependent=>true
end
class User < ActiveRecord::Base
has_many :blogs
has_many :posts, :through=>:blogs
end
class Post < ActiveRecord::Base
belongs_to :blog
belongs_to :user
end
我的问题是: 1.当创建一个用户,我想自动创建一个博客给他。
@user = User.find_or_create_by_name(USER_NAME)
如何去创建一个博客? @blog = Blog.find_or_create_by_user_id(@user)
我收到以下错误:
undefined method `find_or_create_by_user_id' for #<Class:0x1044735b0>
@blogs = @user.blogs
给我:
Mysql::Error: Unknown column 'blogs.user_id' in 'where clause': SELECT * FROM `blogs` WHERE (`blogs`.user_id=1234)
我知道博客表没有user_id列。 但是不是联合应该照顾它吗? 我在这里做错了什么?
感谢您的帮助
一个博客可以有多个用户(或人谁可以提交)。这是博客和用户之间的许多关系。不会添加一个user_id列来击败该目的? – truthSeekr 2011-05-22 03:09:59
你说得对。 posts表是否打算成为用户和博客之间的关联表?如果是这样,这些协会是有点关闭。我会编辑我的答案。 – DonaldSowell 2011-05-22 03:25:35
是的,Posts表应该是关联表。谢谢你的帮助。 – truthSeekr 2011-05-22 03:28:43