Rails,嵌套属性,使父级无效,没有子级

时间:2012-12-18 17:49:22

标签: ruby-on-rails ruby-on-rails-3 nested-attributes

假设我有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

这是邮政形式:

<%= f.fields_for :tags do |tg| %>
  <%= tg.label :tag_id %>
  <%= tg.select :tag_id .... %>
<% end %>

一切都很完美,代码最少。帖子与被选中的标签相关联。

现在:如果我希望用户为他们的帖子选择至少一个标签,该怎么办?如何使没有选择标签的帖子无效?什么是最优雅的解决方案?

1 个答案:

答案 0 :(得分:1)

在Post模型中添加validates_presence_of :tags以强制用户选择标记。