【发布时间】:2013-01-10 23:15:38
【问题描述】:
鉴于我有下一个模型:
用户.rb
has_many :favorites, dependent: :destroy
has_many :sports, through: :favorites
运动.rb
has_many :favorites, dependent: :destroy
has_many :users, through: :favorites
在创建新用户的表单中,有一个运动复选框列表,在用户验证中,我想验证是否至少选择了一个。
我是这样做的:
在用户控制器中创建动作:
@user = User.new(params[:user])
@user.sports << Sport.find(params[:sports]) unless params[:sports].nil?
if @user.save ...
在用户模型中
validate :user_must_select_sport
def user_must_select_sport
if sports.empty?
errors.add(:Sport, "You have to select at least 1 sport")
end
end
它确实有效,但我猜它必须是一种更好的方法。如有任何帮助,我将不胜感激。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3.2 rails-activerecord