Я использую Ruby on Rails 3.1.0. Я пытаюсь сохранить вложенную модель с атрибутом, предназначенным для хранения внешнего ключа родительской модели. Во время создания родительской модели я хотел бы установить значение этого атрибута для родительской модели id
значение.
В моей модели у меня есть:
class Article < ActiveRecord::Base
has_many :article_category_relationships
has_many :categories,
:through => :article_category_relationships
# Accept nested model attributes
accepts_nested_attributes_for :articles_category_relationships
end
class Category < ActiveRecord::Base
has_many :article_category_relationships
has_many :articles,
:through => :article_category_relationships
end
# The join model:
class ArticleCategoryRelationship < ActiveRecord::Base
# Table columns are:
# - article_id
# - category_id
# - user_id
# - ...
belongs_to :category
belongs_to :article
end
На мой взгляд, у меня есть следующее:
...
<% @current_user.article_categories.each do |article_category| %>
<%= check_box_tag 'article[articles_category_relationships_attributes][][category_id]', article_category.id, false %>
<% end %>
В моем контроллере у меня есть:
def create
@article = Article.new(params[:article])
...
end
В моем случае article_id
(относящийся к вложенной модели ArticleCategoryRelationship
) должен быть установлен в значение @article.id
после создания Article
, и проблема в том, что среда Ruby on Rails кажется не устанавливайте это значение во время создания. В двух словах, учитывая мой случай, Я хотел бы присоединить внешний ключ автоматически .
Просто чтобы знать, сгенерированный params
при отправке формы:
"article"=>{"title"=>"Sample title", "articles_category_relationships_attributes"=>[{"category_id"=>"8"}, {"category_id"=>"9"}, {"category_id"=>"10"}] }
Можно ли автоматически установить внешний ключ (article_id
) для вложенной модели? Если так, как я могу это сделать?