我目前正在开发一个rails应用程序(rails v5.1.1和ruby v2.3.4),当我试图在我的一个路由(/bookings/new
)上使用reform表单对象时出错:
undefined method `persisted?' for #<Booking:0x007fbae9a98138>
我使用的是virtus model(在其他情况下也可以):
class Booking
include Virtus.model
attribute :id, Integer
attribute :client_email, String
end
这是我的表单对象:
class BookingForm < Reform::Form
property :client_email
end
这是控制器上的
new
操作:def new
@form = BookingForm.new(Booking.new)
end
这是我的部分表格:
<%= form_for @form do |form| %>
<%= form.text_field :client_email %>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
我认为使用virtus模型而不是活动记录应该是没有问题的,因为改革本身就是
Form objects decoupled from your models
我做错什么了吗? 最佳答案
似乎@fanta的评论起到了帮助作用,但我的长期答案是,你应该避免使用Virtus,特别是因为你正在构建一个新项目Virtus不再由自己的团队支持,他们转向dry rb(dry type和dry validation)
如果需要模拟模型,可以使用dry struct、openstruct等
同时,现在的改革已经完全支持干式验证和干式类型,这将是未来的发展方向(你将一直支持到第4版)
祝你好运:-)
关于ruby-on-rails - 未定义的方法“是否持续?”改革和维特图斯模型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44890453/