我正在使用Ruby on Rails 3.0.7并且我正在尝试保存一个“has_many :through => checkboxes
”类对象(我已经阅读了Quick Tip: has_many :through => checkboxes博客文章)但是我在这方面遇到了一些麻烦。我想在 new 文章和用户“拥有”的文章类别之间创建一些关联(在下面的代码@current_user
中),利用这种“神奇的方式”使用Ruby on Rails关联模型。
在我的模型中我有:
class Article < ActiveRecord::Base
has_many :category_relationships,
:class_name => 'Categories::ArticleRelationship',
:foreign_key => 'article_id',
:autosave => true,
:dependent => :destroy
has_many :article_categories,
:through => :category_relationships,
:source => :article_category,
:uniq => true,
:dependent => :destroy
attr_accessible :category_relationship_ids
end
class Categories::ArticleRelationship < ActiveRecord::Base
belongs_to :article,
:class_name => 'Article',
:foreign_key => 'article_id'
belongs_to :article_category,
:class_name => 'Articles::Category',
:foreign_key => 'category_id'
end
在我的视图文件中,我有:
...
<% @current_user.article_categories.each do |article_category| %>
<div>
<%= check_box_tag :category_relationship_ids, article_category.id, false, :name => 'article[category_relationship_ids][]' %>
<%= label_tag :article_category, article_category.name %>
</div>
<% end %>
...
输出以下HTML代码:
<div>
<input type="checkbox" value="5" name="article[category_relationship_ids][]" id="category_relationship_ids">
<label for="category">comunication</label>
</div>
<div>
<input type="checkbox" value="6" name="article[category_relationship_ids][]" id="category_relationship_ids">
<label for="category">internal</label>
</div>
当我检查\选择上面两个复选框时,(然后)我提交表单并检查日志文件(输出分别与@article
和@article_relationships
相关的Article
和Categories::ArticleRelationship
数据param[:article] => {"name"=>"Sample title", "category_relationship_ids"=>["5", "6"], ...}
@article => #<Article id: nil, title: "Sample title", ...>
@article_relationships => [#<Categories::ArticleRelationship id: 5, category_id: 6, article_id: 3, ...>, [#<Categories::ArticleRelationship id: 6, category_id: 4, article_id: 5, ...>
对象实例),我得到以下内容:
Categories::ArticleRelationship id
似乎Ruby on Rails将nil
值设置为复选框值(在上面的HTML代码中:5和6),而不是将它们设置为nil
(那些应该是{{} 1}}因为在数据库中尚未创建Categories::ArticleRelationship
。此外,我不知道category_id
和article_id
值所需的位置(article_id
值应为nil
,因为@article
实例尚未创建数据库)。
有什么问题?我该如何解决?