在属于其他模型的模型中仅显示没有属性的消息

时间:2013-11-18 11:10:06

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 ruby-on-rails-3.1 ruby-on-rails-4

我想在表单上显示没有属性的消息。 我有两个类,issue_attachment和issue。

没有模型issue_attachment,我有一个方法检查文件是否以exe,.com ..等结尾,如果是,则返回错误消息。

问题是我不希望错误消息完成。但我不能这样做。我尝试了“基础”的每一个变体,没有任何作用。

我做了一些测试并将验证方法放在课堂问题中并使用“:base”并且它可以工作。

但我需要验证方法:suspitious_attachment issue_attachment留在课堂上。

issue.rb

has_many :attachments, class_name: 'IssueAttachment', dependent: :destroy, autosave: true

issue_attachment.rb

validate :suspitious_attachment

private

def suspitious_attachment
  if ends_with? '.bat', '.com', '.exe', '.src', '.cmd'
    errors.add(:attachment, I18n.t('errors.messages.suspitious_attachment', :value =>   attachment.path[-4..-1]))
  end
end

def ends_with?(*args)
  args.each do |arg|
    return true if attachment.path.ends_with? arg
  end
  false
  end  
end

_form.html.erb

<div class="clearfix">
    <%= image_tag 'icons/required.png', :alt => '*' %><%= t('labels.attachments') %>
    <div class="input">
      <div class="inputs-list">
        <%= f.fields_for :attachments do |builder| %>
          <%= render 'attachment_fields', :f => builder %>
    <% end %>
    <%= f.link_to_add t('actions.add_another_attachment'), :attachments, :class => 'icon-attach' %>
  </div>
</div>

有人知道错误吗?

我的英语非常糟糕? :PP

1 个答案:

答案 0 :(得分:0)

我不确定你的错误是什么,但我认为你的end_with方法有问题。

正如其他问题的答案所示,有一些简单的Ruby方法可以找到扩展名并根据允许的类型列表进行检查。请看这个: Find the extension of a filename in Ruby

我会测试你的suspitious_attachment方法中是否有正确的文件名,然后使用与上面答案中描述的方法类似的方法。

希望这有帮助