未定义的方法“持续存在?”改革与美德模式
undefined method `persisted?' with Reform and Virtus model
我目前正在开发 Rails 应用程序(rails v5.1.1 和 ruby v2.3.4),但在尝试使用 reform 在我的其中一条路线上形成对象 (/bookings/new
):
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 模型而不是 active record 应该没有问题,因为改革以 Form objects decoupled from your models
来推销自己。我有没有看错?
@fanta 的评论似乎有所帮助,但我的长期答案是您应该避免使用 Virtus,尤其是因为您正在构建一个新项目。 Virtus 不再由自己的团队支持,他们转向 dry-rb(dry-types 和 dry-validations)
如果您需要模拟模型 - 您可以使用 dry-struct、OpenStruct 等
此外,Reform 现在完全支持 dry-validation 和 dry-types,这将是未来的方式(thou AM 将支持到版本 4)
祝你好运:-)
我目前正在开发 Rails 应用程序(rails v5.1.1 和 ruby v2.3.4),但在尝试使用 reform 在我的其中一条路线上形成对象 (/bookings/new
):
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 模型而不是 active record 应该没有问题,因为改革以 Form objects decoupled from your models
来推销自己。我有没有看错?
@fanta 的评论似乎有所帮助,但我的长期答案是您应该避免使用 Virtus,尤其是因为您正在构建一个新项目。 Virtus 不再由自己的团队支持,他们转向 dry-rb(dry-types 和 dry-validations)
如果您需要模拟模型 - 您可以使用 dry-struct、OpenStruct 等
此外,Reform 现在完全支持 dry-validation 和 dry-types,这将是未来的方式(thou AM 将支持到版本 4) 祝你好运:-)