Ruby on rails 正在验证活动记录中的数组对象

Ruby on rails 正在验证活动记录中的数组对象,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,请任何人帮助我在对象数组中进行验证…权重是我的字段名..我只想验证权重(存在性和数值性)。但我无法获得任何验证错误..我不知道我在哪里出错..如果有人知道解决方案,请告诉我 我的看法是: <tbody> <% if @company_column_master != nil then @company_column_master.each.w

请任何人帮助我在对象数组中进行验证…权重是我的字段名..我只想验证权重(存在性和数值性)。但我无法获得任何验证错误..我不知道我在哪里出错..如果有人知道解决方案,请告诉我

我的看法是:

<tbody>             
            <% if @company_column_master != nil then                            
                @company_column_master.each.with_index(0) do |assess,index| %>
                  <tr> 
                    <td><%= index+1 %> 
                        <%= hidden_field_tag :company_column_master_id ,assess.attributes["company_column_master_id"],name: 'cd_column_id[]' %>
                        <%= hidden_field_tag :data_element_id ,assess.attributes["data_element_id"],name: 'data_element_id[]' %>
                        <%= hidden_field_tag :display_order ,assess.attributes["display_order"],name: 'display_order[]' %>
                    </td>       
                    <td><%= text_field_tag "display_name", assess.attributes["display_name"], name: 'display_name[]', size:50 ,:autocomplete => :off%></td>
                    <td><%= text_field_tag "weightage", assess.attributes["weightage"] ,name: 'weightage[]' ,:autocomplete => :off%></td>                                           #getting values from db using array
                    <td class="text-center">
                        <%= check_box_tag('status'+index.to_s,'1',if (assess.attributes["status"] == 1) then true end, class: 'js-switch') %>
                    </td>
                  </tr>
                <%end%>
                <%= hidden_field_tag :phase_id ,@company_column_master[0].attributes["cd_phase_id"]%>
                <%= hidden_field_tag :phase_detail_id ,@company_column_master[0].attributes["cd_phase_detail_id"]%>         
            <%end%>
        </tbody>

:关闭%>
:off%>#使用数组从数据库获取值
这是我的模型部分:

class CompanyColumnMaster < ActiveRecord::Base
  validates :weightage, :presence => {:message => 'cannot be Blank!'}, :format => {:with => /\A[0-9]+\z/, message: "may only contain numbers."}, 
  :length => {:maximum => 50, :message => 'Exceeds Maximum number of numbers.'}

  validate :check_weightage

 def check_weightage
   if weightage!=nil && weightage < 0
     errors.add(:weightage, "should be greater than or equal to zero")
   end
 end
end
class CompanyColumnMaster{:message=>'不能为空!'},:format=>{:with=>/\A[0-9]+\z/,message:“只能包含数字。”},
:length=>{:maximum=>50,:message=>'超过了最大数目。'}
验证:检查重量
def检查重量
如果重量=零和重量<0(&W)
错误。添加(:权重,“应大于或等于零”)
结束
结束
结束

您同时在做两件事-您使用Rails的
验证和自定义
验证。选择一个

为了使用自定义验证,您必须编写方法(您所做的几乎可以):


你搞乱了验证。可能是应该在这些抱歉,我不明白你在说什么。是的,我也尝试过。但真的没有得到解决方案。或者我应该在模型中也使用[]吗??与def check_weightage errors类似。添加(:weightage[],“应大于或等于零”),除非(weightage[]&&weightage[]>=0&&weightage.is_是一个整数),因为我使用数组右键显示weightage值??所以我问End我写的东西应该有用,但是你必须删除validates行我已经删除了那一行并编写了你的代码..但是它显示了意外的常量“error我在我的模型中得到了错误“unexpected tConstant”在第22行,那是哪一行?它是用我写的方法截取的吗?
validate :check_weightage

def check_weightage
   errors.add(:weightage, "should be greater than or equal to zero") unless (weightage && weightage >= 0 && weightage.is_a? Integer)
end