【发布时间】:2011-08-19 11:01:25
【问题描述】:
有没有办法将 Rails 模型设置为与现有资源具有默认关联,即我创建了一篇新博客文章,它会自动获得 ID 为 10 的作者。
【问题讨论】:
-
您是否总是希望默认关联指向 id 为 10 的用户?
-
可能,请告诉我您的建议
标签: ruby-on-rails model associations new-operator
有没有办法将 Rails 模型设置为与现有资源具有默认关联,即我创建了一篇新博客文章,它会自动获得 ID 为 10 的作者。
【问题讨论】:
标签: ruby-on-rails model associations new-operator
您可以在您的 BlogPost 模型中执行类似的操作,这将为用户 10 分配创建的每篇博客文章。
after_create do |blog_post|
blog_post.user = User.find(10)
blog_post.tags = Tag.all # Or whatever
end
编辑:
要在调用 new 时发生这种情况,请改用 after_initialize 回调:
after_initialize do |blog_post|
blog_post.user = User.find(10)
blog_post.tags = Tag.all # Or whatever
end
【讨论】:
我不确定这是否是您所得到的,但您可以通过使用活动记录附带的关联扩展来实现您想要做的事情,即
u = User.first
u.blog_posts.create(:title => 'great post', :content => 'better content')
这将创建一篇博文并自动将 user_id 分配给用户 u
有关更多信息,请参阅此页面:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html
【讨论】: