【发布时间】:2011-11-29 12:09:04
【问题描述】:
我正在使用 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 之后设置为@article.id 值,问题是Ruby on Rails 框架似乎不要在创建时设置该值。简而言之,考虑到我的情况,我想自动附加外键。
要知道,表单提交时生成的params是:
"article"=>{"title"=>"Sample title", "articles_category_relationships_attributes"=>[{"category_id"=>"8"}, {"category_id"=>"9"}, {"category_id"=>"10"}] }
是否可以“自动”设置嵌套模型的外键 (article_id) ?如果是这样,我该怎么做?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 model nested