未定义的方法`坚持?'改革和Virtus模型

时间:2017-07-03 16:38:29

标签: ruby-on-rails ruby reform trailblazer virtus

我正在开发一个Rails应用程序(rails v5.1.1和ruby v2.3.4),当我尝试在我的一个路由中使用reform表单对象时出现错误({{1 }}):

/bookings/new

我正在使用virtus model(在其他情境中可以正常工作):

undefined method `persisted?' for #<Booking:0x007fbae9a98138>

这是我的表单对象:

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

我认为使用virtus模型而不是主动记录应该没有问题,因为改革将自己卖为<%= form_for @form do |form| %> <%= form.text_field :client_email %> <div class="actions"> <%= form.submit %> </div> <% end %> 。我有什么不对吗?

1 个答案:

答案 0 :(得分:0)

似乎来自@fanta的评论有所帮助,但我的长期答案是你应该避免使用Virtus,特别是因为你正在建立一个新项目。 Virtus不再受到它自己的团队的支持,他们转向干式(干型和干式验证)

如果你需要模拟一个模型 - 你可以使用dry-struct,OpenStruct等

此外,改革现在完全支持干验证和干式,并且它将成为未来的方式(直到版本4,你将得到支持) 祝你好运:-)