Чтобы использовать модель Post в качестве таблицы ассоциации, модель User должна быть настроена для правильной демонстрации ассоциации.После этого вы можете использовать after_create
для создания нового блога для вновь созданного пользователя.
class User < ActiveRecord::Base
has_many :posts
has_many :blogs, :through=>:posts
after_create :add_blog
private
def add_blog
blogs << Blog.new
end
end
РЕДАКТИРОВАТЬ:
Лучшее, что я знаю, как это сделать, это объяснить, что я«думай», что отношения пытаются достичь, тогда ты скажешь мне, где я, и мы идем оттуда.
1) Пользователь может «владеть» многими блогами
2) В блоге может быть много сообщений
3) Сообщение принадлежит одному пользователю и одному блогу
4) блог может иметь только одного «владельца» (пользователя)
5) Блоги могут «принадлежать» многим пользователям, что дает им разрешение на публикацию.
Если 1-4 являются истинными, а 5 ложными ... это не сценарий "has_many: through" или отношения "многие ко многим", а только отношения "один ко многим".
Соответственно, сообщения не должны использоваться в качестве таблицы ассоциации.Таблица ассоциации не нужна.
добавьте t.integer :user_id, :null => false
в таблицу блогов
class Blog < ActiveRecord::Base
belongs_to :users,
has_many :posts, :dependent=>:destroy # rec'd error in RoR3... replaced true with :destroy
end
class User < ActiveRecord::Base
has_many :blogs, :dependent=>:destroy
has_many :posts
after_create :add_blog
private
def add_blog
blogs << Blog.new
end
end
class Post < ActiveRecord::Base
belongs_to :blog
belongs_to :user
end
Если 5 истинно, это будет истинным множителем ...но я не думаю, что вы пытаетесь это сделать.