在Rails 4中构建与新

du

我的问题类似于Rails 3中的Build vs new

在Rails 3中,我可以在视图中构建一个对象以通过cancan检查授权。

<% if can? :create, @question.answers.new %>
  # Code...
<% end %>

在Rails 3,之间的区别.new,并.build.build增加了新建成的对象父集合,然后导致的观点,这显然是不希望额外的记录。

但是,在Rails 4中,两者都将对象添加到集合中,从而在视图中呈现一个空记录。

有没有人对如何解决这个问题有什么建议?检查记录是否.persisted?在视图中是一种选择,但是以某种方式,我觉得我不必这样做。

编辑:澄清一下,CanCan模型如下所示:

can :manage, Answer do |answer|
  user.belongables.include?(answer.question.try(:belongable))
end

因此,我不能只是按班级检查。实际上需要一个实际实例来根据该关系进行比较。

du

我可以解决问题,并找到两种方法。

首先,正如https://github.com/rails/rails/issues/9167指出的那样,使用scoped可以解决此问题。因此,我正在使用@question.answers.scoped.new正如我所解释的,Answer.new(question: @question)由于需要更多的数据,简单的方法没有成功,并且该示例过于简化。

第二,坚持MVC模式。控制器负责准备数据。因此,遍历问题时,您可以像在中那样在控制器中准备数据@answers = @question.answers现在,该@answers集合不受关联.new.build关联的影响。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

构建关联 Rails 4

来自分类Dev

从Rails中的Yaml构建数组

来自分类Dev

在Rails 4中向新条目添加位置

来自分类Dev

Rails 4:在新操作中传递布尔值

来自分类Dev

用于更新Rails 4中记录的新表格

来自分类Dev

Rails 4创建新标签

来自分类Dev

Rails4 anwer字段中的嵌套表单未构建为4.times

来自分类Dev

构建邀请函数[Rails 4]

来自分类Dev

rails:rails的条件4

来自分类Dev

rails:rails的条件4

来自分类Dev

Rails 4中的ForbiddenAttributesError

来自分类Dev

Rails 4中的ForbiddenAttributesError

来自分类Dev

Rails 4 has_many关联中未定义的方法构建

来自分类Dev

在Rails 4中构建一个简单的计算器表单

来自分类Dev

从头开始构建消息系统,并在Rails 4中建立多个收件人

来自分类Dev

从头开始构建消息系统,并在Rails 4中建立多个收件人

来自分类Dev

Rails 4中的Rails 2 with_scope

来自分类Dev

在Rails中构建约会预订系统

来自分类Dev

在Rails中构建动态ActiveRecord查询

来自分类Dev

在Rails 3中构建Gem或Plugin或Engine

来自分类Dev

根据Rails中的选择动态构建表

来自分类Dev

在Rails中构建动态ActiveRecord查询

来自分类Dev

跳过在Rails中构建相关对象的验证

来自分类Dev

在Rails中构建文章/博客页面

来自分类Dev

在 Rails 中构建管理面板

来自分类Dev

如何从Rails中预先建立的选择(如果不存在,则为新选择)中正确地构建关系?

来自分类Dev

使用RVM创建新的Rails 4应用

来自分类Dev

Rails 4 Ajax无法呈现新数据

来自分类Dev

Rails 4新表单默认来自params