我是Ruby / RoR的新手,到目前为止一切都很顺利,但是我在从表单字段更新数据库时遇到了问题(除生日字段外,每个字段都保存)。我认为这里存在一个较小的实现问题,但是我很难解决。
表格:
<%= f.label :birthday %>
<%= f.date_select :birthday, {order: [:month, :day, :year], prompt: { day: 'Select day', month: 'Select month', year: 'Select year' }, start_year: Date.today.year - 118, end_year: Date.today.year}, class: 'form-control' %>
用户模型:
def update
@user = User.find(params[:id])
if @user.update_attributes(user_params)
flash[:success] = "Profile updated"
redirect_to @user
else
render 'edit'
end
end
def user_params
unless logged_in?
params.require(:user).permit(:first_name, :last_name, :email, :usertype, :password,:password_confirmation)
else
params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation, :street, :city, :state, :zipcode, :phone_number, :birthday, :month, :day, :year)
end
end
字段的数据库迁移
add_column :users, :birthday, :date
add_column :users, :month, :date
add_column :users, :day, :date
add_column :users, :year, :date
答案 0 :(得分:1)
当您有if((ScheduledTask-Exists($taskname))){
Write-Output "$taskname already exists"
}
else{
$run = (Get-Date).AddMinutes(2)
Register-ScheduledTask -TaskPath $taskpath -TaskName $taskname -InputObject (
(
New-ScheduledTask -Action $action -Trigger $trigger -Settings $setting
) | %{ $_.Triggers[0].EndBoundary = $run.AddMinutes(30).ToString('s') ; $_}
)
Write-Output "Creating Scheduled Task - $taskName"
}
字段时,它将创建可以在Ruby attr_accessor
的上下文中实例化的虚拟属性,但不会映射到数据库字段。
在您的情况下,由于您拥有数据库字段object
,并且使用相同的名称创建了虚拟属性,因此在birthday
调用中,该属性仍分配给虚拟属性,而不分配给生成的数据库字段通过ActiveRecord。因此,您的对象没有保存。
update
last_name attr_accessor
full_name`,通常使用rails代码中的 and
。
此外,在Rails的上下文中,, where database has
与attr_accessor
不同。后期通常用于将用于属性分配的参数列入白名单;在新版本的Rails(正在使用)中,它被Strong-parameters取代
希望它会有所帮助:)
编辑:正在搜索是否有人问过这个问题。找到了这个,认为这对您也有帮助-https://stackoverflow.com/a/4735726/1376448