0
我有2個控制器:創建記者在軌獨特USER_NAME 4
1.reporter 2.problem
在此代碼,用戶可以創建一個新的記者,然後爲每個記者的諸多問題。
Problem.rb:
class Problem < ActiveRecord::Base
belongs_to :reporter
end
Reporter.rb
class Reporter < ActiveRecord::Base
has_many :problems
end
Reporter_controller.rb
class ReportersController < ApplicationController
def new
@reporter = Reporter.new
@reporters = Reporter.find(:all)
end
def create
@reporter = Reporter.new(reporter_params)
if @reporter.save
redirect_to new_reporter_path
end
end
private
def reporter_params
params.require(:reporter).permit(:user_name, :phone_number)
end
end
Problem_controller.rb
class ProblemsController < ApplicationController
def new
@reporter = Reporter.find(params[:id])
@problem = @reporter.problems.build
end
def create
@reporter = Reporter.find(params[:id])
@problem = @reporter.problems.build(problem_params)
if @problem.save
redirect_to new_problem_path(:id => @reporter.id)
end
end
private
def problem_params
params.require(:problem).permit(:reporter_id, :status, :date_time, :trace_code)
end
end
我不希望用戶能夠使用已存在於數據庫中的user_name
(唯一的user_name
)創建新的記者。我更改了reporter_controller.rb中的創建操作,如下所示,但它無法正常工作。
def create
@checkreporter = Reporter.find_by(:user_name)
if @checkreporter.blank?
@reporter = Reporter.new(reporter_params)
if @reporter.save
redirect_to new_reporter_path
end
else
redirect_to new_problem_path(:id => @reporter.id)
end
end
使用此代碼,新記者創建,但它沒有獨特的user_name
。 任何想法?
我想user_name驗證應該是Reporter模型的一部分,而不是問題模型 – Monideep
哦,哎呀,我複製了錯誤的模型。感謝@deep的領導。我修復了它。 –
另外,它更好地確保數據庫級別的唯一性,並使用以下行add_index:reporter,:user_name,unique:true生成新的遷移。有關http://ruby.railstutorial.org/chapters/modeling-users#sec-uniqueness_validation的更多詳細信息 – Monideep