Создавать ассоциации моделей Rails по умолчанию - PullRequest
2 голосов
/ 19 августа 2011

Есть ли способ настроить модель Rails, чтобы иметь ассоциации по умолчанию с существующими ресурсами, т.е. я создаю новую запись в блоге, и она автоматически получает назначенного автора с идентификатором 10.

Ответы [ 2 ]

4 голосов
/ 19 августа 2011

Вы можете сделать что-то подобное в своей модели 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
0 голосов
/ 19 августа 2011

Я не уверен, что это то, к чему вы стремитесь, но вы можете достичь того, чего хотите, используя расширения ассоциации, которые поставляются с активной записью, т.е.

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

...