假设我有 Post HABTM 标签,并且我正在通过嵌套属性使用批量分配。
我在 Post 模型中有这个:
accepts_nested_attributes_for :posts_tags, \
:reject_if => proc { |attrs| attrs.tag_id.blank? }
我在 Post 控制器中有这个:
def new
@post = Post.new
3.times { @post.posts_tags.build }
end
def create
@post = Post.new(params[:post])
@post.save
end
这在 Post 形式中:
<%= f.fields_for :tags do |tg| %>
<%= tg.label :tag_id %>
<%= tg.select :tag_id .... %>
<% end %>
一切都完美无缺,代码最少。帖子与被选中的标签相关联。
现在:如果我希望用户为他们的帖子选择至少一个标签怎么办。如何使未选择标签的帖子无效?什么是最优雅的解决方案?