【问题标题】:Check if ruby on rails model column is required检查是否需要 ruby​​ on rails 模型列
【发布时间】:2020-11-17 22:14:43
【问题描述】:

如何检查是否需要 Ruby on Rails 列的列?我正在构建一个流程,人们可以在其中导入 CSV 并将文件中的标题与模型中的相关列相匹配。我不能保证它们会匹配,所以宁愿用户手动匹配它们。

理想情况下,我正在寻找类似Model.column_names[0].required?

如果需要该列,我希望用户能够为所有导入指定一个通用值,这样它们就不会意外失败(因此在下面的演示中未使用输入字段)。

我可以上传文件内容并解析它们,并建立了一个表格,用户可以在其中选择哪个 CSV 列与哪个模型列匹配但想警告使用哪些是必需的。我还没有创建实际的导入元素,但是关于 SO 的各种其他问题都有据可查。

我有一个谷歌,看不到任何东西,也许我使用了错误的搜索词,但任何帮助将不胜感激。

提前致谢!


控制器:

require 'csv'    
    
myfile = params[:file]
csv_text = File.read(myfile.path)
@csv = CSV.parse(csv_text, :headers => true)

@table_headers = Patient.column_names

查看:

<% @table_headers.each_with_index do |header, table_i| %>

    <tr>
      <td>
        <%= header %>
      </td>
      <td>
         
         <select id="table_column[<%= table_i %>]"=>

            <option value="skip">Skip</option>
            <option value="custom">Custom</option>

            <% @csv.headers.each_with_index do |column, file_i| %>
                            
                <option value="<%= file_i %>"><%= column %></option>

            <% end %>
    
        </select>


      </td>

      <td>
        <input>
      </td>

    <tr>

<% end %>

【问题讨论】:

标签: ruby-on-rails ruby rubygems


【解决方案1】:

如果我猜对了,您可以使用自定义验证来返回特定错误(您想为用户分享)。 https://guides.rubyonrails.org/active_record_validations.html#performing-custom-validations

基本上你需要重写validate! 方法。 https://apidock.com/rails/ActiveModel/Validations/validate%21

要识别此类记录(无效),您可以使用valid? 方法。 https://apidock.com/rails/v6.0.0/ActiveModel/Validations/valid%3F

【讨论】:

  • 感谢您抽出宝贵的时间,亚历克斯,当我保存导入时绝对有帮助,但不是我想要的。马修为我指明了正确的方向。感谢您的宝贵时间。
猜你喜欢
  • 1970-01-01
  • 2018-12-09
  • 1970-01-01
  • 1970-01-01
  • 2017-11-25
  • 2020-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多