【发布时间】:2016-05-07 19:57:50
【问题描述】:
我的模型没有正确保存,在我编写的 before_save 验证之前也没有。
我的表格如下:
<%= form_for @troll, url: {action: 'create'} do |f| %>
<%= f.label :email, 'Email (not stored)' %>
<%= f.text_field :email, :required => true, :prompt => 'Email Address' %><br/><br/>
<%= f.label :apikey, 'API Key (not stored)' %>
<%= f.text_field :apikey,:required => true, :prompt => 'API Key' %><br/><br/>
<%= f.label :zone_id, 'Zone ID' %>
<%= f.text_field :zone_id,:required => true, :prompt => 'Zone Id' %></br><br/>
<%= f.label :ip_addr, 'IPv4 Address' %>
<%= f.text_field :ip_addr,:required => true, :prompt => 'IPv4 Address' %><br/><br/>
<%= f.label :timeframe, 'Select a timeframe.' %>
<%= f.select :timeframe, [["15 mins", 15],["60 mins", 60]] %><br/><br/>
<%= f.submit troll_index_path, :value => "Commence Troll!" %>
<% end %>
#create 操作:
def create
puts params[:troll]
@troll = Troll.new(troll_params)
@troll.save
puts @troll.inspect
render '/troll/show', :troll => @troll
end
再往下:
def troll_params
params.require(:troll).permit(:email, :apikey, :zone_id, :ip_addr, :timeframe)
end
我的“表演”动作和终端表演:
#<Troll id: nil, created_at: nil, updated_at: nil, ip_addr: "aaa", zone_id: nil, unix_timestamp: nil>
所以信息没有被保存或验证。我的模型如下:
class Troll < ActiveRecord::Base
require 'resolv'
attr_accessor :apikey, :email, :zone_id, :unix_timestamp, :time_interval, :timeframe
validates :ip_addr, :format => {:with => Resolv::IPv4::Regex,:message => "Not an valid IPv4 format"}
before_save :convert_to_unix
def convert_to_unix(time_interval)
timeValue = self.time_interval.to_i
timeStamp = DateTime.now - timeValue/1440.0
self.unix_timestamp = timeStamp.to_i
end
end
我的数据库架构非常简单。出于隐私原因,我只对保存几条数据感兴趣。
class CreateTrolls < ActiveRecord::Migration
def change
create_table :trolls do |t|
t.string :ip_addr
t.string :zone_id
t.integer :unix_timestamp
end
end
end
我看到参数正确出现,但是当我保存到数据库时,它没有验证 ip_attr 或执行 unix 时间戳转换。
它也将 zone_id 显示为 nil,即使它就在参数中!非常感谢任何方向。
【问题讨论】:
-
你的架构文件是什么样的?
-
嘿@AndrewHendrie,我已经在上面添加了。干杯。
-
你在你的巨魔控制器中使用了强参数吗?
-
是的。我相信是这样。刚刚在上面添加了。
-
另外,运行
@troll.save!,看看返回了什么错误:stackoverflow.com/a/27421738/1945948。
标签: ruby-on-rails ruby view model controller